Поиск поля с наибольшей длиной в столбце

Как найти поле с самой длинной длиной определенного столбца в таблице MySQL?

4 ответов


MySQL имеет много строковые функции вы можете использовать:

SELECT LENGTH(col) as my_len FROM my_table ORDER BY my_len DESC LIMIT 1

более фанки версия (она работает):

SELECT MAX(LENGTH(col)) FROM my_table

вы можете использовать длину команды mysql ()

<?php 
$q = mysql_query("SELECT LENGTH(yourfield) AS fieldlength FROM yourtable ORDER BY fieldlength DESC LIMIT 1"); 
echo $longestfield = mysql_result($q,0); 
?>

вы можете рассмотреть CHAR_LENGTH(). Отличия от документация:

CHAR_LENGTH(): возвращает количество символов в аргументе

LENGTH(): возвращает длину строки в байтах

например, при использовании UTF-8 в вашем столбце эти функции возвращают разные значения.

и обратите внимание, что длина, которую вы установили для


пусть имя таблицы будет tbl1, а имя столбца-col1, в котором вы пытаетесь найти самое длинное значение длины.

подход 1:

select col1, length(col1) from tbl1 order by length(col1) desc limit 1

это вернет значение, а также длину значения.

вышеуказанный подход лучше всего, если их только одна строка или вы хотите получить только одну строку, которая имеет самую длинную длину. В случае если их несколько строк, которые имеют наибольшую длину и вы хотите получить их все, то второй вариант будет лучшим.

подход 2:

выберите col1, length (col1) из tbl1, где length (col1) in (выберите max (длина (col1)) от tbl1)

это вернет как значение, так и длину значения всех строк, имеющих самое длинное значение.