-1

私は SQL Server 2008 の専門家ではありませんが、これは私が達成しようとしていることです。私がこのテーブルを持っているとしましょう:

に値を持たないレコードをカウントしたいcol2, col3、およびcol4where col1=1、これを試しました:

SELECT COUNT(col1) 
FROM table 
WHERE 
    LEN(col2) > 1 OR LEN(col3) > 1 OR LEN(col4) > 1 AND col1 = '1'

しかし、私は何千ものレコードを取得します。皆さんの誰かが私を助けたり、正しい方向に向けたりすることができれば、私はそれを感謝します.

ありがとう。

4

3 に答える 3

2

http://msdn.microsoft.com/en-us/library/ms190276.aspxで演算子の優先順位を確認してください

「AND」は「OR」の前に評価されるため、例は次のようになります。

SELECT COUNT(col1) 
FROM table 
WHERE 
    LEN(col2) > 1 OR LEN(col3) > 1 OR ( LEN(col4) > 1 AND col1 = '1' )

それはかなりオープンな選択です。あなたが言った:

値のないレコードを数えたい

しかし、あなたのコードは値を持つレコードを数えています。だから多分あなたはこれが欲しい:

SELECT COUNT(col1)
FROM table
WHERE col1 = '1' AND
(  col2 IS NULL
OR col3 IS NULL
OR col4 IS NULL
)

次のように言うと、値を持つデータを表示できます。

WHERE LEN(col2) > 0

ただし、col2 が NULL の場合、LEN(col2) も NULL です。ゼロではありません。

文字列が NULL ではなく '' の場合、LENgth を確認できます。

SELECT COUNT(col1)
FROM table
WHERE col1 = '1' AND
(  LEN(col2) = 0
OR LEN(col3) = 0
OR LEN(col4) = 0
)

もちろん、空でない値を表示するつもりだった場合は、次のようになります。

SELECT COUNT(col1)
FROM table
WHERE col1 = '1' AND
(  LEN(col2) > 0
OR LEN(col3) > 0
OR LEN(col4) > 0
)

また、あなたの例では、LEN() が > 1 であると言っていました。

于 2013-03-20T20:43:13.423 に答える
2

WHERE 条件を追加するだけです

SELECT COUNT(col1) 
FROM   table 
WHERE  col2 IS NULL
  AND  col3 IS NULL 
  AND  col4 IS NULL 
  AND  col1='1'

また、サンプル言語はサンプル コードと矛盾しています。代わりに次のことが必要な場合があります。

SELECT COUNT(col1) 
FROM   table 
WHERE  
  (    col2 IS NULL
  OR   col3 IS NULL 
  OR   col4 IS NULL 
  )
  AND  col1='1'
于 2013-03-20T20:15:08.163 に答える
1

多分あなたがしたい:

SELECT COUNT(col1) 
FROM   table 
WHERE  
  (    COALESCE(col2,'')=''
  OR   COALESCE(col3,'')=''
  OR   COALESCE(col4,'')=''
  )
  AND  col1='1'
于 2013-03-20T20:48:34.997 に答える