2013-12-16 67 views
0

我知道在SQL语句的WHERE子句中使用column = NULL会导致一个空的结果集。由于这在编程环境中效率很低,我正在寻找一种方法让MySQL解释column = NULL,比如column IS NULL,可能是通过设置SQL模式?是否有MySQL允许“WHERE x = NULL”(意思是“WHERE x IS NULL”)的SQL模式?

+1

“低效”但**正确**。 – gvee

+0

您可以改用['<=>'](http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#operator_equal-to)。我不会。这不是便携式的。 –

+0

不清楚你在问什么 –

回答

0

嗯,至少PostgreSQL里面当设置为拥有该

transform_null_equals = true 

参数,查询分析器将改变

field = NULL 

field is NULL 

预先。有些东西告诉我有一个等价的参数隐藏在MySQL较少记录的参数中。

0

您可以改为使用<=>。我不会。这不是便携式的。

(感谢马丁·史密斯谁pointed me to这这是一个解决我的问题)

0

你可以在你的case语句的WHERE子句中使用正确的语法:

http://www.postgresql.org/docs/9.4/static/functions-conditional.html

SELECT * FROM my_items WHERE 
    CASE WHEN 1=1 THEN mac = '08:00:2b:01:02:03' 
     WHEN 1=2 THEN mac IS NULL 
    END; 

显然,在这个例子中总是会调用第一个case(WHEN 1 = 1)。你可以把你自己的逻辑满足你的条件。

相关问题