每行所有列所有字符的总长度

Total length off all characters in all columns of each row

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

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

我有一个 table,其中包含一些 varchar(500) 和 varchar(max) 列。我注意到有些行比其他行大很多。

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

到目前为止我尝试的是:

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

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

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

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

it doesn't show EntryID corresponding to the total length of all characters in the row. It also doesn't show the alias for the column showing number of characters in the row.

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

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