Получить максимальную длину столбца VARCHAR в SQL Server - PullRequest
68 голосов
/ 07 марта 2012

Я хочу найти самое длинное VARCHAR в определенном столбце таблицы SQL Server.

Вот пример:

ID = INT IDENTITY
DESC = VARCHAR(5000)

ID | Desc
---|-----
1  | a
2  | aaa
3  | aa

Какой SQL для возврата 3? Так как самое длинное значение составляет 3 символа?

Ответы [ 9 ]

128 голосов
/ 07 марта 2012

Используйте встроенные функции для длины и максимума в столбце описания:

SELECT MAX(LEN(DESC)) FROM table_name;

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

29 голосов
/ 04 июля 2014

для mysql его длина не длина

SELECT MAX(LENGTH(Desc)) FROM table_name
17 голосов
/ 21 ноября 2014

Берегись !! Если есть пробелы, они не будут учитываться методом LEN в T-SQL. Не позволяйте этому обмануть вас и используйте

select max(datalength(Desc)) from table_name
8 голосов
/ 28 января 2015

Для Oracle это также ДЛИНА вместо ЛЕН

SELECT MAX(LENGTH(Desc)) FROM table_name

Кроме того, DESC - зарезервированное слово. Хотя многие зарезервированные слова по-прежнему будут работать для имен столбцов во многих случаях, это плохая практика, и в некоторых случаях это может вызвать проблемы. Они зарезервированы по причине.

Если слово Desc просто использовалось в качестве примера, следует отметить, что не все поймут это, но многие поймут, что это зарезервированное слово для Descending. Лично я начал с этого, а затем попытался выяснить, куда пошло имя столбца, потому что все, что у меня было, это зарезервированные слова. Это не заняло много времени, чтобы понять это, но имейте это в виду при принятии решения о том, что заменить действительное имя столбца.

4 голосов
/ 22 июня 2016

Дает максимальный счет записи в таблице

select max(len(Description))from Table_Name

Дает запись с большим счетом

select Description from Table_Name group by Description having max(len(Description)) >27

Надежда помогает кому-то.

3 голосов
/ 07 марта 2012
SELECT MAX(LEN(Desc)) as MaxLen FROM table
1 голос
/ 28 декабря 2018
SELECT TOP 1 column_name, LEN(column_name) AS Lenght FROM table_name ORDER BY LEN(column_name) DESC
1 голос
/ 18 октября 2016

Для сервера sql (SSMS)

select MAX(LEN(ColumnName)) from table_name

Возвращает количество символов.

 select MAX(DATALENGTH(ColumnName)) from table_name

Возвращает количество использованных / обязательных байтов.

ЕСЛИ кто-то использует varchar, то использует DATALENGTH. Подробнее

0 голосов
/ 04 июня 2019

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

select ID, [description], len([description]) as descriptionlength
FROM [database1].[dbo].[table1]
where len([description]) = 
 (select max(len([description]))
  FROM [database1].[dbo].[table1]
...