检索 SQLServer 中 VARCHAR 列的最大长度

我希望在 SQLServer 表的特定列中找到最长的 VARCHAR

这里有一个例子:

ID = INT IDENTITY
DESC = VARCHAR(5000)


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

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

374095 次浏览

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

SELECT MAX(LEN(DESC)) FROM table_name;

请注意,如果您的表非常大,可能存在性能问题。

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

对于 MySQL,它是 LENGTH,而不是 LEN:

SELECT MAX(LENGTH(Desc)) FROM table_name

小心!如果有空格,则 T-SQL 中的 LEN 方法不会考虑它们。别让这个骗了你

select max(datalength(Desc)) from table_name

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

SELECT MAX(LENGTH(Desc)) FROM table_name

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

如果仅仅使用 Desc 这个词作为例子,那么应该注意的是,并不是每个人都会意识到这一点,但是许多人会意识到它是一个用于“下降”的保留词。就我个人而言,我开始使用这个,然后试图找出列名称去哪里,因为我所有的是保留字。不需要花很长时间就可以搞清楚,但是在决定用什么替代实际的列名时要记住这一点。

Gives the Max Count of record in table

select max(len(Description))from Table_Name

给出具有更大计数的记录

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

希望能帮助别人。

用于 sql 服务器(SSMS)

select MAX(LEN(ColumnName)) from table_name

这将返回字符数。

 select MAX(DATALENGTH(ColumnName)) from table_name

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

IF some one use varchar then use DATALENGTH.更多细节

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

很多时候,您希望标识具有该列最长长度的行,尤其是当您正在进行故障排除以找出为什么表中某行的列的长度比其他任何行的长度都要长的时候。此查询将提供在行上列出标识符的选项,以标识该标识符是哪一行。

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

对于 IBM Db2,它的长度不是 LEN:

SELECT MAX(LENGTH(Desc)) FROM table_name;
select * from table name from where length( column name) =(select MAX(Length(column  name) from table name);

我使用子查询其100% 的工作尝试这一点。