【问题标题】:Biggest/Longest records in varchar tablevarchar 表中最大/最长的记录
【发布时间】:2015-06-10 17:31:28
【问题描述】:

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

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

几乎所有列都是 varchar,所以如果查询可以总结每行数据的大小并显示最大的行,那就太好了。

我试图修改这个:

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

还有这个:

select max(len(Desc)) from table_name

但是

我收到一个错误

消息 156,级别 15,状态 1,行 1 关键字“Desc”附近的语法不正确。

【问题讨论】:

  • DESC 是保留字

标签: sql sql-server varchar maxlength


【解决方案1】:

这个怎么样?

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 很遗憾,仍然无法正常工作,但感谢您的帮助。
    猜你喜欢
    • 2016-09-14
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 2012-03-24
    • 2018-07-11
    相关资源
    最近更新 更多