暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
NULL是值吗?为什么=NULL会出错?.pdf
54
8页
1次
2023-11-28
免费下载
NULL 是值吗?为什么=NULL 会出错?
很多人会将 NULL 称为“空值”。但这个称呼是非常有迷惑性的。事实
上,SQL 的 NULL 不仅不是“空值”,NULL 甚至不能被视作一
“值”。那么,你到底对 SQL 中的 NULL 了解多少呢?
此 NULL 非彼 NULL
首先,NULL 不等于 0,也不是’'(空字符串)。 这很好理解。
其次,NULL 也不是空值。空值,亦是一种值,表示此处确定为空
NULL 是一个更未知的状态——可能有值,可能无值可能存在,可能
不存在,可能是任何值,可能不是任何值。总之一切皆有可能。
这一点和许多编程语言都不相同,不少语言中的 NULL,就是空值的意
思。例如, C、C++ 等语言中,NULL 表示空指针,是一个计算机
保留的值,表示不引用有效对象。但是 SQL 中的 NULL 用法和它们
并不一样。
最后,NULL 甚至都不是一种值。它不是“无值”也不是“未知值”
它只是一个标记符号。此处的值不确定,所以用 NULL 作为占位符来
标记一下而已。NULL 不是值,NULL 的值不确定,因此 NULL
NULL 是不相同的。在逻辑判断中,NULL=NULL 返回的判断结果不
TRUE ,而是 NULL。因为,未知和未知是无法进行比较的。
想要理解这一点也不难——假设你有两场相亲。在见面之前,你对这两
个相亲对象的具体信息一无所知。因此,这俩人对你来说,都是“未知
的”都可以标记为 NULL。但是,你能说这俩人是同一个人吗?不
吧。但是,你能说这俩一定不是同一个人吗?也不一定吧。
NULL 的传递
SQL 中,NULL 这个“未知”的状态,是可传递的。譬如, NULL
进行算术运算,结果都是 NULL。
-- Result is NULLSELECT 2 + NULL;SELECT 2 - NULL;SELECT 2 * NULL;SELECT 2 / NULL;
值得注意的是 NULL 除以 0 时,许多数据库系统并不会返回"data
exception division by zero"的错误,而是返回 NULL。例如,
MySQL、Oracle、PostgreSQL 等等。
-- Result is NULLSELECT NULL / 0;
此外,NULL 还可以运用于字符串的连接中。将 NULL 和其他字符串
相连接,其结果也是 NULL
三值逻辑
理解了 NULL 并非一个值,而是一个符号,才能更好地理解 SQL
的逻辑判断关系。也许有人不解,NULL 是一个值也好,是一个符号也
好,什么区别吗?不都是用来表达“不确定”“未知”的意思吗?
of 8
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜