如何正确理解 SQL 中的 NULL null有哪些常见的意思?
SELECT * FROM SOME_TABLEWHERE SOME_COLUMN IS NULL或者这样写:
复制代码
WHERE SOME_COLUMN = 1准确的写法应当是第二种(WHERE SOME_COLUMN IS NULL) 。
为什么要这样写?
在进行数据库数据比拟操作时 , 我们不会应用“IS”症结词 , 不是吗?
例如 , 如果我们想要知道一个列的值是否等于 1 , WHERE 语句是这样的:
复制代码
WHERE SOME_COLUMN = 1那为什么 NULL 值要用 IS 症结字呢?为什么要以这种方法来处置 NULL?
【如何正确理解 SQL 中的 NULL null有哪些常见的意思?】因为 , 在 SQL 中 , NULL 表现“未知” 。也就是说 , NULL 值表现的是“未知”的值 。
NULL 等于未知在大多数数据库中 , NULl 和空字符串是有差别的 。
但并不是所有数据库都这样 , 例如 , Oracle 就不支撑空字符串 , 它会把空字符串主动转成 NULL 值 。
在其他大多数数据库里 , NULL 值和字符串的处置方法是不一样的:
- 空字符串表现“没有值” , 这个值是已知的 。
- NULL 表现“未知值” , 这个值是未知的 。
- 可能有人会答复创业网说:“我不知道罗斯福总统的中间名是什么” 。对于这种情形 , 可以在数据库中应用 MIDDLE_NAME 列来表现罗斯福的中间名 , 而这一列的值为 NULL 。
- 也可能有人会答复说:“罗斯福总统没有中间名 。他的父母没有给他取中间名 , 所以我知道罗斯福总统确切没有中间名” 。对于这种情形 , MIDDLE_NAME 列应当是一个空字符串 。
但只要记住 NULL 表现的是一个未知的值 , 那么在写 SQL 查询语句时就会得心应手 。
例如 , 如果你有一个这样的查询语句:
复制代码
SELECT * FROM SOME_TABLEWHERE 1 = 1这个查询会返回所有的行(假设 SOME_TABLE 不是空表) , 因为表达式“1=1”必定为 true 。
如果我这样写:
复制代码
SELECT * FROM SOME_TABLEWHERE 1 = 0表达式“1=0”是 false , 这个查询语句不会返回任何数据 。
但如果我写成这样:
复制代码
SELECT * FROM SOME_TABLEWHERE 1 = NULL这个时候 , 数据库不知道这两个值(1 和 NULL)是否相等 , 所以它也不会返回任何数据 。
三元逻辑SQL 查询语句中的 WHERE 一般会有三种成果:
- 它可以是 true(这个时候会返回数据);
- 它可以是 false(这个时候不会返回数据);
- 它也可以是 NULL 或未知(这个时候也不会返回数据) 。
接下来 , 我来告知你创业网在哪些情形下会有问题:我们来看看 NOT() 。
假设有这样的一个查询语句:
复制代码
SELECT * FROM SOME_TABLEWHERE NOT(1 = 1)数据库首先会盘算 1=1 , 这个显然是 true 。
接着 , 数据库会运用 NOT() 条件 , 所以 WHERE 返回 false 。
所以 , 上面的查询不会返回任何数据 。
但如果把语句改成这样:
复制代码
SELECT * FROM SOME_TABLEWHERE NOT(1&n创业网bsp;= 0)数据库首先会盘算 1=0 , 这个确定是 false 。
接着 , 数据库运用 NOT() 条件 , 这样就得到相反的成果 , 变成了 true 。
所以 , 这个语句会返回数据 。
但如果把语句再改成下面这样呢?
复制代码
SELECT * FROM SOME_TABLEWHERE NOT(1 = NULL)数据库首先盘算 1=NULL , 它不知道 1 是否等于 NULL , 因为它不知道 NULL 的值是什么 。
所以 , 这个盘算不会返回 true , 也不会返回 false , 它会返回一个 NULL 。
接下来 , NOT() 会持续解析上一个盘算返回的成果 。
当 NOT() 遇到 NULL , 它会生成另一个 NULL 。未知的相反面是另一个未知 。
所以 , 对于这两个查询:
推荐阅读
- 今起微软正式停止支持IE8/IE9/IE10浏览器 如何把IE8直接升级成IE9
- word如何设置页码 页脚怎么设置连续页码
- 抖音白色闪屏特效视频怎么弄 抖音如何设置抖动效果?
- 伤口化脓怎么处理 伤口化脓怎么办
- 如何正确地做自我介绍 怎么写自我介绍
- 14种解决便秘的方法 如何改善便秘
- 恐龙是怎样灭绝的原因 恐龙是怎样灭绝的
- 皮衣怎么搭配 男士 皮衣怎么搭配
- 在不拆纱窗的情况下清洗纱窗? 纱窗怎么清洗
- 小白如何自学雅思 雅思英语怎么学