我想VARCHAR
在SQL Server表的特定列中找到最长的。
这是一个例子:
ID = INT IDENTITY
DESC = VARCHAR(5000)
ID | Desc
---|-----
1 | a
2 | aaa
3 | aa
返回3的SQL是什么?由于最长的值是3个字符?
Answers:
对于mysql,其长度不为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一词为例,则应注意,并非每个人都会意识到这一点,但是许多人会意识到这是Descending的保留词。就我个人而言,我首先使用它,然后尝试找出列名的去向,因为我所有的都是保留字。很快就知道了,但是在决定用什么代替实际的列名时要牢记这一点。
SELECT TOP 1 column_name, LEN(column_name) AS Lenght FROM table_name ORDER BY LEN(column_name) DESC