varchar表中的最大/最长记录

时间:2015-06-10 17:31:29

标签: sql sql-server varchar maxlength

我们最近注意到,在我们最大的一张桌子中,有些行比其他行大几倍。 “更大”我的意思是更长,占用更多的存储空间。

如何在表格中显示前1000个最大的行?

几乎所有列都是varchar,所以如果查询可以总结每行中数据的大小并显示最大的行,那将会很棒。

我试图修改它:

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

和此:

select max(len(Desc)) from table_name

我收到错误

  

第15行,第1行,第1行,第1行   关键字'Desc'附近的语法不正确。

2 个答案:

答案 0 :(得分:3)

这个怎么样?

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

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

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

我已使用len()进行此计算,因为这是您在问题中使用的内容。您可能也对[DATALENGTH()][1]感兴趣。

答案 1 :(得分:2)

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

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