2015-06-11 58 views
0

我是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。我如何添加它? enter image description here

它也不顯示顯示行中字符數的列的別名。

您能否建議我如何更改查詢以獲得預期結果?我會非常感謝任何建議。

+0

我能問下投票背後的原因,使我能避免犯同樣的錯誤的未來? – QWE

回答

3

它不顯示EntryID對應於該行中所有 字符的總長度。它也不顯示列 的別名,顯示行中的字符數。

您還沒有指定別名,那麼它應該顯示什麼?您還沒有選擇EntryID。如果你想最長1000行必須由長度訂購:

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

謝謝蒂姆。它有很多幫助。 – QWE

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

謝謝拉吉。它有很多幫助。 – QWE

相關問題