关于sql语句null的用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于sql语句null的用法相关的知识,希望对你有一定的参考价值。

关于继续前一个提问:
我的提问是select * from [源_城市分配名单$] WHERE [源_城市分配名单$].[新身份证号] not in(Select [源_建设低保、低收入补贴人员$].[新身份证号] From [源_建设低保、低收入补贴人员$])这个为什么没有数据而加上你说的子句就显示成功了。
这是你给我的回答:原因是[源_建设低保、低收入补贴人员$]中存在[新身份证号]为NULL的数据。你可以在子句中加上WHERE [新身份证号] IS NOT NULL。
关于not in 我感觉既然如你所说null值不等于任何值(包括他自己),那么对not in 不影响啊。
假设子句中的表有300个数据,其中10个数据为空。那么不加is not null就是在300个数据中搜索不同的身份证号显示(子句中有300个结果),而加上is not null就是在290的数据中搜索不同的身份证号显示(子句中有290个结果,去掉了null值),为什么300个的没有结果反而290个的数据有结果呢?

是这样的,与null比较的结果是null(不是true,也不是false)。

关于null,可以参照以下理解。
条件为null时不表示结果;
true and null的结果是null;false and null的结果是false;null and null的结果是null;(与先后顺序无关)
true or null的结果是true;false or null的结果是null;null or null的结果是null。(与先后顺序无关)来自:求助得到的回答
参考技术A 为什么用Not in子查询呢?
其实用左联接或者右联接即可完成,且运行更快。
select * from [源_城市分配名单$] left join [源_建设低保、低收入补贴人员$] on [源_建设低保、低收入补贴人员$].[新身份证号] =[源_城市分配名单$].[新身份证号] where [源_建设低保、低收入补贴人员$].[新身份证号] is null

sql 语句NVL()用法

一NVL函数是一个空值转换函数

NVL(表达式1,表达式2)

如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值。 该函数的目的是把一个空值(null)转换成一个实际的值。其表达式的值可以是数字型、字符型和日期型。但是表达式1和表达式2的数据类型必须为同一个类型。

对数字型: NVL( comm,0);

对字符型 NVL( TO_CHAR(comm), ‘No Commission‘)

对日期型 NVL(hiredate,‘ 31-DEC-99‘)

例子:

select   ename,NVL(TO_char(comm), ename||‘ is not a salesperson!‘) AS COMMISSION

from emp

二 NVL2(表达式1,表达式2,表达式3)

如果表达式1为空,返回值为表达式3的值。如果表达式1不为空,返回值为表达式2的值。

例如 NVL2(comm,‘sal+comm‘,sal)

NVL2函数测试comm

如果comm为空,就返回sal 的值。如果 comm 不为空(null),就返回表达式 sal+comm的值。



























以上是关于关于sql语句null的用法的主要内容,如果未能解决你的问题,请参考以下文章

关于SQL语句中的insert用法

关于SQL语句中SUM函数返回NULL的解决办法

SQL语句如何使用join?

关于SQL “GO”用法

关于sql 中 use go 的具体用法

SQL语句中countcount(*)count(字段)用法的区别