null有哪些常见的意思?(如何正确理解 SQL 中的 NULL)

   日期:2021-11-27     文章发布:文章发布    网络转载:生活号    
核心提示:SELECt*FROMSOME_TABLEWHEReSOME_COLUMNISNULL或者这样写:复制代码WHEReSOME_COLUMN=1正确的写法应该是第二种(WHEReSOME_COLUMNISNULL)。为什么要这样写?在进行数据库数据比较操作时,我们不会使用“IS”关键词,不是吗?例如
移动站源标题:http://mip.818114.com/article/item-109072.html 或者这样写:,复制代码,正确的写法应该是第二种(WHERe SOME_COLUMN IS NULL)。,为什么要这样写?,在进行数据库数据比较操作时,我们不会使用“IS”关键词,不是吗?,例如,如果我们想要知道一个列的值是否等于 1,WHERe 语句是这样的:,复制代码,那为什么 NULL 值要用 IS 关键字呢?为什么要以这种方式来处理 NULL?,因为,在 SQL 中,NULL 表示“未知”。也就是说,NULL 值表示的是“未知”的值。,在大多数数据库中,NULl 和空字符串是有区别的。,但并不是所有数据库都这样,例如,Oracle 就不支持空字符串,它会把空字符串自动转成 NULL 值。,在其他大多数数据库里,NULL 值和字符串的处理方式是不一样的:,这就好比我问了一个问题:“美国总统罗斯福的中间名是什么”?,Oracle 比较特殊,两个值都使用 NULL 来表示,而其他大多数数据库会区分对待。,但只要记住 NULL 表示的是一个未知的值,那么在写 SQL 查询语句时就会得心应手。,例如,如果你有一个这样的查询语句:,复制代码,这个查询会返回所有的行(假设 SOME_TABLE 不是空表),因为表达式“1=1”一定为 true。,如果我这样写:,复制代码,表达式“1=0”是 false,这个查询语句不会返回任何数据。,但如果我写成这样:,复制代码,这个时候,数据库不知道这两个值(1 和 NULL)是否相等,所以它也不会返回任何数据。,SQL 查询语句中的 WHERe 一般会有三种结果:,你可能会想:“既然这样,那我为什么要去关心是 false 还是 NULL?它们不是都不会返回数据吗?”,接下来,我来告诉你在哪些情况下会有问题:我们来看看 NOT()。,假设有这样的一个查询语句:,复制代码,数据库首先会计算 1=1,这个显然是 true。,接着,数据库会应用 NOT() 条件,所以 WHERe 返回 false。,所以,上面的查询不会返回任何数据。,但如果把语句改成这样:,复制代码,数据库首先会计算 1=0,这个肯定是 false。,接着,数据库应用 NOT() 条件,这样就得到相反的结果,变成了 true。,所以,这个语句会返回数据。,但如果把语句再改成下面这样呢?,复制代码,数据库首先计算 1=NULL,它不知道 1 是否等于 NULL,因为它不知道 NULL 的值是什么。,所以,这个计算不会返回 true,也不会返回 false,它会返回一个 NULL。,接下来,NOT() 会继续解析上一个计算返回的结果。,当 NOT() 遇到 NULL,它会生成另一个 NULL。未知的相反面是另一个未知。,所以,对于这两个查询:,复制代码,和,复制代码,都不会返回数据,尽管它们是完全相反的。,如果我有这样的一个查询语句:,复制代码,很显然,WHERe 返回 true,这个语句将返回数据,因为 1 在括号列表里是存在的。,但如果这么写:,复制代码,很显然,WHERe 返回 false,这个查询不会返回数据,因为 1 在括号列表里存在,但我们说的是“NOT IN”。,但如果我们把语句改成这样呢?,复制代码,这里的 WHRE 不会返回数据,因为它的结果不是 true。数字 5 在括号列表里可能不存在,也可能存在,因为当中有一个 NULL 值(数据库不知道 NULL 的值是什么)。,这个 WHERe 会返回 NULL,所以整个查询不会返回任何数据。,希望你们现在都清楚该怎么在 SQL 语句中处理 NULL 值了。,
免责声明:本网部分文章和信息来源于互联网,本网转载出于传递更多信息和学习之目的,并不意味着赞同其观点或证实其内容的真实性,如有侵权请通知我们删除!(留言删除
 
 
更多>同类动态

同类新闻
最新资讯
最新发布
最受欢迎
网站首页  |  黄页  |  联系方式  |  信息  |  版权隐私  |  网站地图  |  API推送  |  网站留言  |  RSS订阅  |  违规举报  |  京ICP备2000095号