Table : tbl_email_scheduler
这里date_to_send = '2013-10-12' AND send_status = NULL
。 (在创建表的时候,我给send_status默认为NULL)
Mysql:
SELECT
id,
to_users,
subject,
message,
product_id,
date_to_send,
send_status,
status,
createdate
FROM tbl_email_scheduler
WHERE date_to_send = '2013-10-12'
给我结果
但是当我
SELECT
id,
to_users,
subject,
message,
product_id,
date_to_send,
send_status,
status,
createdate
FROM tbl_email_scheduler
WHERE date_to_send = '2013-10-12'
and send_status != 'Y'
它给我空洞的结果么?
请回答。
答案 0 :(得分:2)
因为数据库服务器将NULL
视为空,请尝试此
SELECT
id,
to_users,
subject,
message,
product_id,
date_to_send,
send_status,
status,
createdate
FROM tbl_email_scheduler
WHERE date_to_send = '2013-10-12' and (send_status !='Y' OR send_status IS NULL)
答案 1 :(得分:0)
我认为你的错误在mysql'<>'
中并不相同试试这个
SELECT id, to_users, subject, message, product_id, date_to_send, send_status, STATUS , createdate FROM tbl_email_scheduler WHERE date_to_send = '2013-10-12' AND send_status <> 'Y' LIMIT 0 , 30
答案 2 :(得分:0)
与NULL
的任何比较都会产生NULL
。在处理NULL
时,您应根据自己的需要使用以下运算符。
x IS NULL
- 确定左手表达式是否为NULL,
x IS NOT NULL
- 如上所述,但相反,
x <=> y
- 以安全的方式比较两个操作数的相等性,即NULL被视为正常值。
答案 3 :(得分:0)
在第二个查询中,您要定义send_status是否不是Y. 这意味着如果send_status为NULL,它将不会获取任何内容。
你应该这样试试
SELECT
id,
to_users,
subject,
message,
product_id,
date_to_send,
send_status,
status,
createdate
FROM tbl_email_scheduler
WHERE date_to_send = '2013-10-12'
and (send_status != 'Y' AND send_status IS NOT NULL)
这将首先获取所有非空结果,并且不应用等于Y条件