2013-04-12 5 views

答えて

0

これを試してみてください:NOTなし

WHERE NOT(column LIKE '_%') 

を、列の値は、少なくとも一つの文字を持っている必要がありますし、NULLをすることはできません。

編集:MySQLはまだこの方法でNULL値を飲み込んでいるようです。これは、より良い動作するはず:

WHERE IFNULL(column, '') = '' 
+0

値の両方を選択します[動作するようには思えない](http://sqlfiddle.com/#!9/e6c26/ 1) – Kermit

27

「正規化」に使用COALESCE()値(空の文字列にNULL値を変換します)。

WHERE COALESCE(mycolumn, '') = '' 

ドキュメント読む:COALESCE()

あるいは他の方法で回避します。空の文字列をNULLに変換します。

WHERE NULLIF(mycolumn, '') IS NULL 

ドキュメント:それはあなただけでこれを行う、それを自分で試すことができ、標準

ANSI SQLの一部であるとして、それら二つのNULLIF()

、私は)(COALESCEを好むだろう。

SELECT 
    mycolumn      AS orig_value, 
    COALESCE(mycolumn, '')  AS coalesce_value, 
    (COALESCE(mycolumn, '') = '') AS compare_result 

FROM mytable; 

これは、元の値、「合体」値と、これをしようとせずWHEREテーブル

+0

この否定版は 'WHERE COALESCE(mycolumn、 '')<> '''ですか? – vertigoelectric

+0

はい、COALESCEは**最初のNULL以外の値**を返します。したがって、 'mycolumn'が' NULL'の場合、 ''を返します。 'mycolumn'が他の値*(空文字列を含む)であれば、' mycolumn'の値が返されます。 – thaJeztah

+1

@vertigoelectricこの質問を「回答済み」とすることはできますか? – thaJeztah

3
WHERE COALESCE(column, '') = '' 
+0

LOL、私たちは同時に同じソリューションを投稿したようです:) – thaJeztah

+0

@thaJeztah LOLええと2秒離れて:P – Esailija

1

別の方法で行ごとに並べて比較側の結果が表示されます..

空とNULLが

SELECT ISNULL(NULLIF(fieldname,'')) FROM tablename 
関連する問題