我想在SQL Server表的特定列中找到最长的VARCHAR
。
以下是一个示例:
ID = INT IDENTITY
DESC = VARCHAR(5000)
ID | Desc
---|-----
1 | a
2 | aaa
3 | aa
如何编写SQL语句返回数字3?假设最长的值为3个字符?
我想在SQL Server表的特定列中找到最长的VARCHAR
。
以下是一个示例:
ID = INT IDENTITY
DESC = VARCHAR(5000)
ID | Desc
---|-----
1 | a
2 | aaa
3 | aa
如何编写SQL语句返回数字3?假设最长的值为3个字符?
使用内置的长度和最大函数在描述列上:
SELECT MAX(LEN(DESC)) FROM table_name;
请注意,如果您的表非常大,可能会出现性能问题。
对于MySQL,应使用LENGTH
而非LEN
:
SELECT MAX(LENGTH(Desc)) FROM table_name
注意!!如果有空格,LEN方法在T-SQL中将不会考虑它们。不要被这个坑到,使用
select max(datalength(Desc)) from table_name
SELECT MAX(LENGTH(Desc)) FROM table_name
返回表中记录的最大计数
select max(len(Description))from Table_Name
获取记录数较多的数据
select Description from Table_Name group by Description having max(len(Description)) >27
希望能对某些人有所帮助。
针对 SQL Server(SSMS)
选项 1:
-- This returns number of characters
select MAX(LEN(ColumnName)) from table_name
选项2:
-- This returns the number of bytes
select MAX(DATALENGTH(ColumnName)) from table_name
VARCHAR
,请使用 DATALENGTH
。 更多细节。很多时候你想要找出那一行中某个列长度最长的数据,特别是当你需要排查某一行中某一个列为什么比其他行的同一列长度都要长得多的情况。这个查询语句可以给你提供在每一行上列出一个标识符以便于辨别它是哪一行。
select ID, [description], len([description]) as descriptionlength
FROM [database1].[dbo].[table1]
where len([description]) =
(select max(len([description]))
FROM [database1].[dbo].[table1]
SELECT TOP 1 column_name, LEN(column_name) AS Lenght FROM table_name ORDER BY LEN(column_name) DESC
SELECT MAX(LEN(Desc)) as MaxLen FROM table
select * from table name from where length( column name) =(select MAX(Length(column name) from table name);
我正在使用子查询,它百分之百可行,请尝试此方法。
DATALENGTH
(因为您可能会在某些地方或将来使用NVARCHAR
) 。 - Aaron Bertrand