老婆微信聊聊天记录怎么才能获取_微信记录发送给别人看不到

访客4年前黑客文章470

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 值表示的是“未知”的值。

在大多数数据库中,NULl 和空字符串是有区别的。

但并不是所有数据库都这样,例如,Oracle 就不支持空字符串,它会把空字符串自动转成 NULL 值。

在其他大多数数据库里,NULL 值和字符串的处理方式是不一样的:

这就好比我问了一个问题:“美国总统罗斯福的中间名是什么”?

Oracle 比较特殊,两个值都使用 NULL 来表示,而其他大多数数据库会区分对待。

但只要记住 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 一般会有三种结果:

你可能会想:“既然这样,那我为什么要去关心是 false 还是 NULL?它们不是都不会返回数据吗?”

接下来,我来告诉你在哪些情况下会有问题:我们来看看 NOT()。

假设有这样的一个查询语句:

复制代码

SELECT * FROM SOME_TABLEWHERE NOT(1 = 1)

数据库首先会计算 1=1,这个显然是 true。

接着,数据库会应用 NOT() 条件,所以 WHERE 返回 false。

所以,上面的查询不会返回任何数据。

但如果把语句改成这样:

复制代码

SELECT * FROM SOME_TABLEWHERE NOT(1 = 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。未知的相反面是另一个未知。

所以,对于这两个查询:

复制代码

SELECT * FROM SOME_TABLEWHERE NOT(1 = NULL)

复制代码

SELECT * FROM SOME_TABLEWHERE 1 = NULL

都不会返回数据,尽管它们是完全相反的。

如果我有这样的一个查询语句:

复制代码

SELECT * FROM SOME_TABLEWHERE 1 IN (1, 2, 3, 4, NULL)

很显然,WHERE 返回 true,这个语句将返回数据,因为 1 在括号列表里是存在的。

但如果这么写:

复制代码

SELECT * FROM SOME_TABLEWHERE 1 NOT IN (1, 2, 3, 4, NULL)

很显然,WHERE 返回 false,这个查询不会返回数据,因为 1 在括号列表里存在,但我们说的是“NOT IN”。

但如果我们把语句改成这样呢?

复制代码

SELECT * FROM SOME_TABLEWHERE 5 NOT IN (1, 2, 3, 4, NULL)

这里的 WHRE 不会返回数据,因为它的结果不是 true。数字 5 在括号列表里可能不存在,也可能存在,因为当中有一个 NULL 值(数据库不知道 NULL 的值是什么)。

这个 WHERE 会返回 NULL,所以整个查询不会返回任何数据。

希望你们现在都清楚该怎么在 SQL 语句中处理 NULL 值了。

相关文章

介绍公司的软文怎么写(公司发展历程简介范文)

介绍公司的软文怎么写(公司发展历程简介范文)

现代社会是一个资讯发达的社会,互联网又是社会发展的热点,每天都有日新月异的变化或者各种让人瞩目的事件,这一切都是写软文、写心得的好来源,通过关注行业内的焦点新闻、事件,写出自己的感受和评论。 软文营...

QQ音乐见证实力派与新声代并驾齐驱,多元音乐蓬

在过去的一年里,哪些音乐人最受歌迷欢迎,哪些音乐类型成为乐迷的“新宠”?今年初QQ音乐发布的2020巅峰榜年终榜单给出答案,这个被誉为“流行音乐权威风向标”的榜单见证了2020年热闹非凡的乐坛,更为接...

如何找到真正的黑客帮忙有没有黑客免费接单的

近日MDSec安全公司的人员发现了如何利用一款几百美元的设备越过iPhone锁屏。 对于未越狱的iPhone来说,猜错10次就会导致密码系统无法破解,因此造成所以破解难度十分大。但MDSec的人士利...

全国酒店入住记录查询app,全国宾馆入住记录查询系统

全国酒店入住记录查询app,全国宾馆入住记录查询系统 一个月之内的在所在宾馆即可查到,超出一个月就必须到所在管辖的派出所查一下宾馆登记记录 满意请采纳。 公安网上怎么查全国宾馆记录 入住宾馆登记记录,...

caj文件怎么打开(如何使用手机打开并查看CAJ文

caj文件怎么打开(如何使用手机打开并查看CAJ文件) 我们下载学习资料经常会接触到CAJ格式的文档,有时使用手机要怎么样还能打开呢?下面就说一说如...

大话2黑客,以色列黑客软件,传奇密码暴力破解器 黑客字典

21.5 渔具(演示用)://第2次附加字节对子域名进行含糊勘探,能够运用常见扫描器进行轻扫描。 确认其服务器类型,运用脚本类型,常用cms。 发现一个文件包括,经过phpinfo获取网站跟目录及i...