我们最近注意到,在我们最大的一张桌子中,有些行比其他行大几倍。 “更大”我的意思是更长,占用更多的存储空间。
如何在表格中显示前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'附近的语法不正确。
答案 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