Есть ли лучший способ определить, является ли столбец в таблице пустым или нет? - PullRequest
0 голосов
/ 20 мая 2009

У меня есть таблица «T» в базе данных SQL Server 2005, и в ней есть два столбца «A» и «B», которые чаще всего не содержат никаких значений. Как проверить, являются ли A и B пустыми (имеет все строки нулевой длины) или нет?

У меня есть такой наивный способ сделать это -

select count(*) as A_count from T where A <> ''

Предположим, что A имеет тип данных varchar.

Мне было интересно, смогу ли я получить ту же информацию, используя системную таблицу, и если это так, будет ли это быстрее, чем этот запрос?

ура

Ответы [ 3 ]

2 голосов
/ 20 мая 2009

Ваш метод, по сути, правильный, хотя формулировка в вашем вопросе неточна. Включает ли пустая пустая строка или пустую строку ненулевой длины?

Вы можете обработать эти случаи с помощью:

select count(*) as A_count from T where isnull(rtrim(ltrim(A)), '') <> ''

Также убедитесь, что в столбце А есть индекс.

0 голосов
/ 20 мая 2009

Если ваш столбец обнуляем, вам придется изменить ваш запрос следующим образом:

выберите количество (*) как A_count из T, где COALESCE (A, '') <> ''

в противном случае вы не будете считать нули.

0 голосов
/ 20 мая 2009

Если мы говорим о строках нулевой длины, то я бы так и сделал:

select count(*) as A_count from T where LEN(A) > 0

Имейте в виду, однако, что если A может быть нулевым, то эти строки не будут пойманы ни LEN (A)> 0, ни LEN (A) = 0, и вам придется обернуть ISNULL вокруг A этот случай.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...