106

我想VARCHAR在 SQL Server 表的特定列中找到最长的。

这是一个例子:

ID = INT IDENTITY
DESC = VARCHAR(5000)

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

返回 3 的 SQL 是什么?因为最长的值是 3 个字符?

4

11 回答 11

196

使用描述列的长度和最大值的内置函数:

SELECT MAX(LEN(DESC)) FROM table_name;

请注意,如果您的表非常大,可能会出现性能问题。

于 2012-03-06T21:35:45.147 回答
49

对于MySQL,它是LENGTH,不是LEN

SELECT MAX(LENGTH(Desc)) FROM table_name
于 2014-07-04T09:24:05.083 回答
19

小心!!如果有空格,则 T-SQL 中的 LEN 方法将不会考虑它们。不要让这个欺骗你并使用

select max(datalength(Desc)) from table_name
于 2014-11-21T14:06:39.970 回答
9

对于 Oracle,它也是 LENGTH 而不是 LEN

SELECT MAX(LENGTH(Desc)) FROM table_name

此外,DESC 是保留字。尽管许多保留字在许多情况下仍可用于列名,但这样做是不好的做法,并且在某些情况下可能会导致问题。它们被保留是有原因的。

如果 Desc 只是用作示例,应该注意不是每个人都会意识到这一点,但许多人会意识到它是 Descending 的保留字。就个人而言,我从使用它开始,然后试图找出列名的去向,因为我只有保留字。很快就弄清楚了,但在决定用什么代替您的实际列名时请记住这一点。

于 2015-01-28T20:42:55.697 回答
7

给出表中记录的最大计数

select max(len(Description))from Table_Name

提供具有更大计数的记录

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

希望能帮助某人。

于 2016-06-22T13:59:41.703 回答
6

对于 sql server (SSMS)

select MAX(LEN(ColumnName)) from table_name

这将返回字符数。

 select MAX(DATALENGTH(ColumnName)) from table_name

这将返回使用/需要的字节数。

如果有人使用 varchar 然后使用DATALENGTH. 更多细节

于 2016-10-18T09:21:40.480 回答
4
SELECT TOP 1 column_name, LEN(column_name) AS Lenght FROM table_name ORDER BY LEN(column_name) DESC
于 2018-12-28T13:20:40.843 回答
3
SELECT MAX(LEN(Desc)) as MaxLen FROM table
于 2012-03-06T21:37:18.123 回答
1
select * from table name from where length( column name) =(select MAX(Length(column  name) from table name);  

我正在使用子查询,它的 100% 工作试试这个。

于 2021-10-26T05:19:20.593 回答
1

很多时候,您想要识别具有最长长度的列的行,特别是如果您正在排除故障以找出为什么表中某行的列长度比任何其他行都长得多,例如。此查询将为您提供在行上列出标识符的选项,以识别它是哪一行。

select ID, [description], len([description]) as descriptionlength
FROM [database1].[dbo].[table1]
where len([description]) = 
 (select max(len([description]))
  FROM [database1].[dbo].[table1]
于 2019-06-04T19:41:33.090 回答
0

对于 IBM Db2,它的 LENGTH,而不是 LEN:

SELECT MAX(LENGTH(Desc)) FROM table_name;
于 2020-08-31T15:16:34.453 回答