気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
下記のような質問は推奨されていません。
- 質問になっていない投稿
- スパムや攻撃的な表現を用いた投稿
適切な質問に修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2016/03/09 08:40

回答4件
3
概念的なことが知りたいのであればミックさんの記事が詳しく易しいので参考になると思います。
3値論理とNULL
投稿2016/03/09 08:55
総合スコア925
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
3
SQLはUNKNOWNをはじめとした「値でないもの」をすべてNULLとしています。
他にある「値でないもの」の代表的なものにはNot Applicableがありますが、そういうのも区別せずNULLです。
ユーザーの性別が未入力ならUNKNOWNですし、法人の性別はNot Applicableですよね、そういうのを区別せずという意味です。
結論としてはどういうことかというと、厳密な意味ではUNKNOWNとNULLは等価ではありません。NULLはUNKNOWNを含むと言うべきです。でも、実用的にはNULL===UNKNOWNだと明言しているRDB製品は複数あります。
投稿2016/03/09 08:38
総合スコア5568
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
回答へのコメント

1
ベストアンサー
等価ではありません。
UNKNOWNはtrueやfalseと同じく論理代数で、一方のNULLは単なる値とのことです。
3値論理とNULL(CodeZine)
投稿2016/03/09 08:59
総合スコア326
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
回答へのコメント

1
PostgreSQLでのみ使用できるらしいです。
因みに、自分の使用しているMySQL5.6では動作しませんでした。
質問者様からコメントをいただき再度調べてみました。
NULLとUNKNOWNは別もの(であるべき)という事の様です。
書き直すと下記のようです。(やはり私、独自の記述方式です。)
- NULL(KNOWN)
- UNKNOWN
しかし、実装しているRDBシステムによって実際の値は異なるようです。
MySQLではNULL <> UNKNOWNが仕様で記載されいるらしいですが、
別のあるRDBではNULL = UNKONWという仕様で設計されているようです。
どちらにしろ、下記のような処理はしてはいけないという事です。
sql
1SELECT 2 CASE [blnValue] 3 WHEN true THEN 'TRUE' 4 WHEN false THEN 'FALSE' 5 WHEN null THEN 'NULL' 6 ELSE 'UNKNOWN' 7 END 8FROM table_some
リンク先を参照しましたが
NULL (UNKNOWN)
と記述されている箇所は見つかりませんでした。
別のサイトを検索したところ、
SQLでのBoolean型に「3値問題」というのがあるらしいです。
Booleanがtrue
、false
、null
の3つを値として持つことがあり、
null
になったときに処理の結果が保障されないとのことです。
しかし、SQLではなく別のプログラミング言語ではNULLは2種類あることになっているようです。
便宜的に記載すると下記の様なことらしいです。(あくまで私、独自の記述方式です。)
- NULL(KNOWN)
- NULL(UNKNOWN)
なので、一般的なプログラミング言語においてのBoolean型は
このNULL2種類を含めて「Booleanの4種値問題」となるそうです。
SQLに話を戻すとNULLが2種の値を持つことがなく常にNULL(UNKNOWN)であることは保証されているため、
MySQLの仕様ドキュメントのどこかにその様な記載があったのかもしれません。
以上、
ご参考になりますでしょうか?
投稿2016/03/09 08:48
編集2016/03/12 10:43総合スコア396
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
同じタグがついた質問を見る
MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。