检索SQL Server中VARCHAR列的最大长度

时间:2012-03-06 21:34:48

标签: sql sql-server

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

以下是一个例子:

ID = INT IDENTITY
DESC = VARCHAR(5000)

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

返回3的SQL是什么?由于最长的值是3个字符?

10 个答案:

答案 0 :(得分:123)

在说明栏中使用内置函数的长度和最大值:

SELECT MAX(LEN(DESC)) FROM table_name;

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

答案 1 :(得分:28)

mysql 其长度不是len

SELECT MAX(LENGTH(Desc)) FROM table_name

答案 2 :(得分:17)

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

select max(datalength(Desc)) from table_name

答案 3 :(得分:7)

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

SELECT MAX(LENGTH(Desc)) FROM table_name

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

如果仅使用Desc这个词作为一个例子,应该注意的是并非每个人都会意识到这一点,但是很多人会意识到它是Descending的保留词。就个人而言,我开始使用它,然后试图弄清楚列名称的去向,因为我所有的都是保留字。没过多久就弄清楚了,但在决定用什么代替你的实际列名时要记住这一点。

答案 4 :(得分:4)

在表格

中提供最大记录数
select max(len(Description))from Table_Name

提供更多计数的记录

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

希望帮助某人。

答案 5 :(得分:3)

SELECT MAX(LEN(Desc)) as MaxLen FROM table

答案 6 :(得分:1)

对于sql server(SSMS)

select MAX(LEN(ColumnName)) from table_name

这将返回字符数。

 select MAX(DATALENGTH(ColumnName)) from table_name

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

如果有人使用varchar,请使用DATALENGTHthis

答案 7 :(得分:1)

SELECT TOP 1 column_name, LEN(column_name) AS Lenght FROM table_name ORDER BY LEN(column_name) DESC

答案 8 :(得分:0)

很多时候,您想标识具有该列的最长长度的行,尤其是在进行故障排除以查明为什么表中某行的列长度比任何其他行都这么长时,尤其如此实例。通过该查询,您可以选择在该行上列出一个标识符,以识别该行。

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

答案 9 :(得分:0)

对于IBM Db2,其长度(而非LEN):

SELECT MAX(LENGTH(Desc)) FROM table_name;