ど素人から毛を生やす。<延>

[MySQL]空文字 or NULL を一息で判別したかった話

Web > Other 2018年8月21日(最終更新:2月前)

どもです。
MySQL初心者です。

カラムAにデータが入っていたらAを、入っていなかったらBの内容を取得したかったのですが、
「入っていない状態」は空文字とNULLの2パターンが想定される。
DB構成としてアカンくないか、NULL許容させんなや、などとツッコミはありますが、古いDBに文句言っても仕方ない。

さて、NULLと空文字が別物だってのは、MySQL初心者でも常識です。

NULLは「IS NULL」で、空文字は「=''」で指定、
と思ったのですが、「!=''」でNULLと空文字の両方を除外できると小耳に挟みました。

え、なにゆえ??
じゃあ「!=''」を使おう、とするには、そうなる理由がわからなくて怖い。

そう思っていましたら、こちらのQiitaの記事にすごくわかりやすい解説コメントがついていまして。

要約すると、「!=''」のとき

'AAA' ⇒ TRUE
''    ⇒ FALSE
NULL  ⇒ NULL

まじか( ゚Д゚)
試しにSELECTのところで演算してみたところ、確かに上記の結果が出力されました。

NULLだとFALSEでなくNULLを返す、真偽に於いてNULLはFALSEと同じ結果になる、と。
勉強になった。

この記事は役に立ちましたか?
  • _(:3」∠)_ 面白かった (0)
  • (`・ω・´) 役に立った (0)
  • (・∀・) 参考になった (2)