gpt4 book ai didi

sql - 与 SQL 中的 NULL 比较

转载 作者:行者123 更新时间:2023-12-04 13:14:40 25 4
gpt4 key购买 nike

ANSI-92 SQL 要求与 NULL 进行比较评估为“假”,例如:

SELECT * FROM table WHERE field = NULL
SELECT * FROM table WHERE field != NULL

两者都不会返回任何行,因为 NULL不能这样比较。相反,谓词 IS NULLIS NOT NULL必须改用:
SELECT * FROM table WHERE field IS NULL
SELECT * FROM table WHERE field IS NOT NULL

研究表明,Oracle 1、PostgreSQL、MySQL 和 SQLite 都支持 ANSI 语法。将 DB2 和 Firebird 添加到该列表中。

除了带有 ANSI_NULLS 的 SQL Server关掉了,还有哪些其他 RDBMS 支持非 ANSI 语法?

1 整个空字符串 = NULL尽管乱七八糟。

最佳答案

就其值(value)而言,将某些内容与 NULL 进行比较并非严格错误,这是未知的。此外,NOT未知还是未知。

ANSI SQL-99 定义了一个谓词 IS [NOT] DISTINCT FROM .这允许您在comarisons 中混合空值和非空值,并且总是得到真或假。 Null 以这种方式与 null 相比为真,否则任何与 null 相比的非 null 为假。所以否定如你所料。

PostgreSQL、IBM DB2 和 Firebird 确​​实支持 IS [NOT] DISTINCT FROM .

MySQL 有一个类似的空安全比较运算符 <=>如果操作数相同,则返回 true,如果操作数不同,则返回 false。

Oracle 有最艰难的道路。您必须使用 NVL() 发挥创意或 bool 表达式:

WHERE a = b OR (a IS NULL AND b IS NULL)

哎呀。

关于sql - 与 SQL 中的 NULL 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7367327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com