SQL为空和=空

SQL为空和=空

.之间的区别是什么?

where x is null

where x = null

为什么后者不起作用?


翻阅古今
浏览 1067回答 3
3回答

泛舟湖上清波郎朗

在SQL中,对null值和任何其他值(包括其他值)null)使用比较运算符(例如=, !=, <,等)会导致null,被认为是false为了WHERE子句的目的(严格地说,它是“不正确”,而不是“假”,但效果是一样的)。理由是null意思是“未知”,所以与null也是“未知”。因此,您将不会通过编码在行上命中。where my_column = null.SQL提供了用于测试列是否为null.class=‘class 2’>is null和is not null,这是测试null(或者不是null).下面是一些SQL,显示了各种条件及其效果,如上面所示。create table t (x int, y int);insert into t values (null, null), (null, 1), (1, 1);select 'x = null' as test , x, y from t where x = nullunion allselect 'x != null', x, y from t where x != nullunion allselect 'not (x = null)', x, y from t where not (x = null)union allselect 'x = y', x, y from t where x = yunion allselect 'not (x = y)', x, y from t where not (x = y);只返回一行(如预期的):TEST&nbsp; &nbsp; X&nbsp; &nbsp;Yx = y&nbsp; &nbsp;1&nbsp; &nbsp;1看到这个在运行SQLFiddle

慕虎7371278

值得注意的是,NULL不等于NULL.NULL不是一个值,因此不能与另一个值进行比较。where x is null检查x是否为空值。where x = null是检查x是否等于NULL,这永远不会是真。

慕码人2483693

首先是检查字段值是否为null但是以后就不会像你期望的那样工作了,因为null是不等于任何东西的特殊值,因此不能使用=为了它。因此,当您需要检查字段值是否为null或不使用:where&nbsp;x&nbsp;is&nbsp;null而不是:where&nbsp;x&nbsp;=&nbsp;null
打开App,查看更多内容
随时随地看视频慕课网APP