2009-05-20 9 views
0

SQL Server 2005データベースにTというテーブルがあり、2つの列にAとBがあります。これらの列には多くの場合、値が入りません。 AとBが空である(長さゼロの文字列をすべて含む)かどうかをチェックする方法はありますか?テーブルの列が空であるかどうかを確かめる良い方法はありますか?

私はそれをやって、この素朴な方法を持っている -

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

のは、Aは、データ型varchar型を持っていると仮定しましょう。

私はシステムテーブルを使って同じ情報を得ることができるのだろうかと思いました。あなたの質問での文言が不正確であるものの

歓声

+0

オラクルを使用していないのは残念です。この種の作業には、ビットマップ索引が最適です。 – RichardOD

答えて

0

あなたの列がNULL可能である場合は、次のようにクエリを変更する必要があります。

SELECT COUNT(*)A_countとしてCOALESCE(A、 '')<> 'T' から

そうあなたはヌルを数えません。

2

あなたの方法は、本質的に正しいです。空文字列にNULLまたはゼロ以外の長さの空文字列が含まれていますか?

あなたがして、これらのケースを処理できます。私たちは長さゼロの文字列について話している場合、これはその方法で列A.

0

上のインデックスがあることを確認し、また

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

私はそれを行うだろう:

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

がnullになることができれば、これらの行はどちらかLEN(A)> 0またはLEN(A)= 0、そしてあなたそれによってキャッチされないことが、覚えておいてください私をラップする必要がありますその場合はAの周りを覗く。

関連する問題