2015-06-11 3 views
0

Я новичок в SQL Server, поэтому прошу прощения, если мой вопрос кажется слишком простым. Я попытался найти и ответить самостоятельно, но я терплю неудачу. Я пытаюсь создать запрос, который вернет общий размер на диске каждой строки в таблице.Общая длина всех символов во всех столбцах каждой строки

Я думал об использовании dbcc showconting, но он не работает для varchar (max), который появляется в моей таблице. Кроме того, он не возвращает размер для каждой строки, а скорее средний, максимальный и минимальный размер. До сих пор я читал, что невозможно получить запрос, который мог бы показать размер каждой отдельной строки в таблице, поэтому я решил установить для общей длины всех символов в каждом столбце в каждой строке. Косвенно это даст мне представление о размере каждой строки.

У меня есть стол с несколькими столбцами varchar (500) и varchar (max). Я заметил, что некоторые из строк намного больше, чем другие.

Что мне нужно 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 

Он работает, но он не показывает идентификатор записи, соответствующий общей длины всех символов в строке. Как его добавить? 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

Смежные вопросы