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

我想在SQL Server表的特定列中find最长的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,其长度不是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 MAX(LEN(Desc)) as MaxLen FROM table 

在表中给出最大logging数

 select max(len(Description))from Table_Name 

给logging更大的数量

 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 

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

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