【问题标题】:Total length off all characters in all columns of each row每行所有列中所有字符的总长度
【发布时间】:2015-06-11 11:00:47
【问题描述】:

我是 SQL Server 的新手,所以如果我的问题看起来太简单了,我深表歉意。我尝试自己寻找和回答,但我失败得很惨。我正在尝试创建一个查询,它将返回表中每一行的驱动器上的总大小。

我考虑过使用 dbcc showconting,但它不适用于出现在我的表中的 varchar(max)。此外,它不会返回每行的大小,而是返回平均、最大和最小大小。到目前为止,我的阅读表明不可能获得可以显示表中每一行大小的查询,因此我决定确定每行中每一列中所有字符的总长度。间接地,它会让我了解每行的大小。

我有一个包含一些 varchar(500) 和 varchar(max) 列的表。我注意到有些行比其他行大得多。

我需要的是表中最长的 1000 行,最好是在显示两列的输出中: 第 1 列显示 EntryID 第 2 列 显示该记录的所有列中字符的总长度(例如,第 1 列中的字符总长度 + 第 2 列中的字符总长度 + 第 3 列 + 第 4 列等。 .) 如果可以将其命名为 RowLength,那就太好了。

到目前为止我尝试的是:

SELECT TOP 1000 
(LEN(columnname1) + LEN(columnname2) + LEN(columnname3) + LEN(columnname4)) as RowLength,
 FROM dbo.tablename
 ORDER BY Length Desc

它有效,但它不显示对应于行中所有字符的总长度的条目 ID。我该如何添加它?

它也不显示显示行中字符数的列的别名。

您能否建议我如何更改查询以获得预期结果?如有任何建议,我将不胜感激。

【问题讨论】:

  • 我能不能问一下投反对票的原因,这样我以后可以避免犯同样的错误?

标签: sql-server varchar maxlength


【解决方案1】:

它没有显示EntryID 对应于所有的总长度 行中的字符。它也不显示列的别名 显示行中的字符数。

您还没有指定别名,那么它应该显示什么?您还没有选择EntryID。如果您想要最长的 1000 行,则必须按长度排序:

SELECT TOP 1000 
    EntryID,  
    Length = LEN(columnname1) + LEN(columnname2) + LEN(columnname3) + LEN(columnname4)
 FROM dbo.tablename
 ORDER BY Length DESC

【讨论】:

  • 谢谢蒂姆。很有帮助。
【解决方案2】:
SELECT TOP 1000 EntryID,
(LEN(columnname1) + LEN(columnname2) + LEN(columnname3) + LEN(columnname4)) AS   RowLength,
 FROM dbo.tablename
 ORDER BY EntryID

【讨论】:

  • 谢谢拉吉。很有帮助。
猜你喜欢
  • 1970-01-01
  • 2012-10-20
  • 2020-07-07
  • 1970-01-01
  • 1970-01-01
  • 2012-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多