Biggest/Longest varchar 中的记录 table

Biggest/Longest records in varchar table

我们最近注意到,在我们最大的 table 之一中,有些行比其他行大几倍。 "bigger" 我的意思是更长的时间和更多的存储空间 space。

如何显示 table 中最大的前 1000 行?

几乎所有列都是 varchar,因此如果查询能够汇总每一行中的数据大小并显示最大的行,那就太好了。

我试着修改这个:

select MyVarcharColumnName
from MyTableName
where len(MyVarcharColumnName) =
(select max(len(MyVarcharColumnName)) from MyTableName)

还有这个:

select max(len(Desc)) from table_name

但是

我收到一个错误

Msg 156, Level 15, State 1, Line 1 Incorrect syntax near the keyword 'Desc'.

它认为Desc是关键字而不是标识符。尝试将其括在尖括号 ([]) 中,如下所示:

select max(len([Desc])) from table_name

这个怎么样?

select top 1000 t.*
from MyTableName t
order by len(MyVarcharColumnName) desc;

如果您有多列,可以将它们添加到 order by:

order by (len(col1) + len(col2) + . . . ) desc

我在这个计算中使用了 len(),因为这就是你在问题中使用的。您可能还对 [DATALENGTH()][1].

感兴趣