2009-10-28 5 views
26

私はストアドプロシージャ内に次のコードがあります。SQL Not Likeステートメントが動作しません

WHERE 
    WPP.ACCEPTED = 1 AND 
    WPI.EMAIL LIKE '%@MATH.UCLA.EDU%' AND 
    (WPP.SPEAKER = 0 OR 
    WPP.SPEAKER IS NULL) AND 
    WPP.COMMENT NOT LIKE '%CORE%' AND 
    WPP.PROGRAMCODE = 'cmaws3' 

誰もが何かを言う前に、COREが含まれており、他のすべての列がOKしないCOMMENT列を含む項目があるそう文が動作していないLIKE、およびNOT。

これに間違っていることを知っている人はいますか?

+2

「働いていない」とはどういう意味ですか?例外を投げる?または、ちょうど常にfalseと評価されていますか? – Tenner

+0

あなたの意見では返されなければならない行の関連値を投稿してください。 – Quassnoi

+0

@mattgconあなたが質問した質問に答えて答えを得たら、投票数の下にあるチェックをクリックして答えを "受け入れてください"。 –

答えて

43

WPP.COMMENTNULLが含まれる場合、条件は一致しません。

このクエリ:

SELECT 1 
WHERE NULL NOT LIKE '%test%' 

は何も返さないでしょう。

NULL列の場合、任意の検索文字列に対するLIKENOT LIKEの両方がNULLを返します。

あなたの意見では返されなければならない行の関連値を投稿してください。

6

特定のCOMMENT列の値はnullですか?

場合によっては、NOT LIKEはnullの周りを正しく動作させる方法を知らないことがあります。

0

mattgcon、

が動作するはずですが、あなたがコメントアウト「NOT LIKE」行と同じSQLを実行する場合は、より多くの行を取得するのですか?そうでない場合は、データを確認してください。あなたの質問に言及したことは分かっていますが、実際のSQL文がその句を使用していることを確認してください。他の答えはNULLも良い考えです。

5

私はちょうど同じ問題に出くわして解決しましたが、私はこの投稿を見つける前でした。

の代わりに;そして、あなたの質問は本当に答えはなかったと見て、ここに私のソリューションは、うまくいけば、あなたのために働く、または他の誰が、私は同じことを探しれる(だ

... AND WPP.COMMENT NOT LIKE '%CORE%' ... 

てみてください。

... AND NOT WPP.COMMENT LIKE '%CORE%' ... 

は基本的に私が評価されたフィールドの「NOT」他の側が私のために働い動く。ただ、この渡って来る

+3

ようこそstackoverflowへようこそ。実際にはまだnullが含まれていません。これは正しい動作です。なぜなら、 'null'はそれ自体でさえありません。 nullをインクルードする場合は、条件を追加するか、ORカラムがNULLか、COALESCEを使用して値が決してnullにならないようにします。 – Leigh

3

、答えは簡単です、を使用210。 (

WHERE wpp.comment NOT LIKE '%CORE%' 

をので、あなたは一時的にnullに値を代入している:あなたがテストされているフィールドは、例えば、テキスト比較検索を行うとき(レコードの一部に)値がない場合、SQLは、行を返しません。 ISNULLコマンドを使用して、空の)レコード、例えば

WHERE (ISNULL(wpp.comment,'')) NOT LIKE '%CORE%' 

これはその後、ヌルを持つすべてのレコードを表示し、任意のそのあなたの照合基準を持っているが省略されます。あなたが欲しいのであれば、カンマの中に何かを覚えておくことができます。例えば、

関連する問題