3番目のクエリだけが機能する理由を教えてもらえますか? NULL
ifとget の扱いが異なることは理解できempty column/string
ますが、なぜ 2 番目のクエリが機能しないのですか? is_disabled
andis_terminated
への変換VARCHAR(3)
も同様に役に立ちません。
ありがとう
テーブル:
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`fullname` varbinary(100) NOT NULL,
`is_disabled` enum('Yes') DEFAULT NULL,
`is_terminated` enum('Yes') DEFAULT NULL
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
データ:
id - fullname - is_disabled - is_terminated
1 - User One - {this is just empty column} - NULL
クエリ 1:
SELECT id, fullname FROM users
WHERE id = '1'
AND
is_disabled != 'Yes' /* is_disabled <> 'Yes' */
AND
is_terminated != 'Yes' /* is_terminated <> 'Yes' */
クエリ 2:
SELECT id, fullname FROM users
WHERE id = '1'
AND
is_disabled = '' /* is_disabled IS NULL */
AND
is_terminated = '' /* is_terminated IS NULL */
クエリ 3:
SELECT id, fullname FROM users
WHERE id = '1'
AND
(is_disabled = '' OR is_disabled IS NULL)
AND
(is_terminated = '' OR is_terminated IS NULL)