Нахождение поля с самой длинной длиной в столбце - PullRequest
10 голосов
/ 23 июля 2010

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

Ответы [ 4 ]

18 голосов
/ 23 июля 2010

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

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

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

SELECT MAX(LENGTH(col)) FROM my_table
10 голосов
/ 23 июля 2010

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

<?php 
$q = mysql_query("SELECT LENGTH(yourfield) AS fieldlength FROM yourtable ORDER BY fieldlength DESC LIMIT 1"); 
echo $longestfield = mysql_result($q,0); 
?>
3 голосов
/ 20 декабря 2016

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

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

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

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

И обратите внимание, что длина, установленная для столбца string (например: varchar)на самом деле его длина символа.

2 голосов
/ 01 августа 2016

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

Подход 1:

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

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

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

Подход 2:

выберите col1, длину (col1) из tbl1, где длина (col1) в (выберите max (длина (col1)) из таблицы tl1)

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

...