不等于<>!= NULL运算符
|
有人可以解释一下SQL中的以下行为吗?
SELECT * FROM MyTable WHERE MyColumn != NULL (0 Results)
SELECT * FROM MyTable WHERE MyColumn <> NULL (0 Results)
SELECT * FROM MyTable WHERE MyColumn IS NOT NULL (568 Results)
没有找到相关结果
已邀请:
11 个回复
闪票仇门韧
是等效的。两者都评估值,
不是-
是占位符,表示没有值。 这就是为什么您只能在这种情况下使用
/
作为谓词的原因。 此行为并不特定于SQL Server。所有符合标准的SQL方言都以相同的方式工作。 注意:要比较是否不为空,请使用
,而要比较不为空值,请使用
。我不能说我的值是否等于NULL,但是我可以说我的值是NULL还是NOT NULL。如果我的值不是NULL,则可以进行比较。
剃摧庭峨僳
岭取
http://msdn.microsoft.com/en-us/library/ms188048.aspx 您会得到不同的结果。
显然会在未来消失...
磐去裸猜饲
或
给您0结果的原因。 为了检查
值,提供了isNull函数。 此外,您可以像在第三个查询中一样使用
运算符。 希望这可以帮助。
信藉乒
冲汉
返回MyColumn为NULL的所有行或MyColumn为空字符串的所有行。对于许多\“最终用户\”,NULL与空字符串的问题是一个区别,没有必要和混乱的地方。
填盖
你们当中有多少人知道这段代码将返回什么?有或没有NOT,它都返回0。对我来说,这不起作用,而且令人困惑。在c#中,它应该是全部,比较操作返回值,从逻辑上讲,这也会产生值,因为如果没有,则没有什么可比较的(nothing :)除外)。它们只是“说”:与null“ returns” 0相比的任何值,都会造成许多变通方法和麻烦。 这是使我来到这里的代码:
我只需要比较两个字段(在哪里)具有不同的值,就可以使用函数,但是...
距相镭
淘圃跺枯替
是新值,
是旧值(尽管顺序无关紧要)。因此,从值更改为null或从值更改为null都不是更改(当然,从值更改为另一个值是更改,但从值更改为相同则不是)。
要使用此功能,您可以
结果是:
sql_variant的用法使其与多种类型兼容
屑凉赦
表示无值或未知值。它没有说明为什么没有价值,这会导致一些歧义。 假设您运行如下查询:
也就是说,您要查找“ 26”和“ 27”日期相同的行。 一列或两列为空时会发生什么? 因为至少一个日期是未知的,所以您不能期望说这两个日期是相同的。当两个日期都不知道时也是如此:如果我们什至不知道它们是什么,它们怎么可能相同? 因此,任何将“ 24”视为值的表达式都必须失败。在这种情况下,它将不匹配。如果您尝试以下操作,也是如此:
再说一次,如果我们不知道两个值是什么,我们怎么能说这两个值不相同。 SQL对缺失值进行了特定的测试:
具体来说,它不是在比较值,而是寻找缺失的值。 最后,据我所知,关于“ 2”运算符,它实际上并没有出现在任何标准中,但是得到了广泛的支持。它的添加使某些语言的程序员感到宾至如归。坦白说,如果程序员难以记住他们使用的语言,那他们将是一个糟糕的开端。
诞胃