ORACLE 数据库中的NUMBER类型的字段为NULL时怎么处理?

ORACLE 数据库中的NUMBER类型的字段为NULL时怎么处理?,第1张

1、创建一张数据库测试表,用于演示null空值的查询。

2、往测试表中插入测试记录,包含一个NULL、空字符串、非空字符串值。

3、查询测试表中的所有数据,select * from tblNullData。

4、在oracle数据库中,null与任何字段相比都会返回false,为此,oracle提供了一个is null词组判断null。从运行结果可以看出,空字符串不是null select * from tblNullData where ColName is null。

5、在oracle数据库中,想要查询非null的值,就需要使用is not null词组判断了。从运行结果可以看出,空字符串的记录行查询出来了select * from tblNullData where ColName is not null。

允许空值的意思。

允许空值和有默认值并不冲突,插入数据时如果指定使用默认值,它会使用这个默认值0,如果插入数据时不指定这一列,它会保持空值。

空值是不占用空间的,MySQL中的NULL其实是占用空间的。

扩展资料:

使用NULL可以区分“没有输入数据”和“输入空数据”, 差异在于:

NULL的长度就是NULL,空字符串的长度为0。

一串NULL数据比空字符串优先排序。

COUNT(message)会将空字符串计数进去,但是不会将NULL数据们计入。

可以使用绑定变量搜索某个空字符串,但是不可以这样搜索NULL。

在SQL中,NULL值与任何其它值的比较(即使是NULL)永远不会为“真”。包含NULL的表达式总是会导出NULL值,除非在关于 *** 作符的文档中以及表达式的函数中作了其他规定。

假设有如下一张表,名为 Product (DDL 见本文结尾):

在使用 DISTINCT 时, NULL 也被视为一类数据。 NULL 存在于多行中时,也会被合并为一条 NULL 数据。

对含有 NULL 数据的列使用 DISTINCT 关键字:

执行结果为:

考虑一下在 SQL 语句中如下运算的结果:

正确答案是 全为 NULL 。实际上 所有包含 NULL 的计算,结果肯定是 NULL

当我们尝试取出不是进货单价不是 2800 日元( purchase_price <>2800 )的记录时:

执行结果为:

执行结果中并 没有 “叉子”和“圆珠笔”。这两条记录由于进货单价不明( NULL ),因此无法判定是不是 2800 日元。

当你尝试使用 purchase_price = NULL 或 purchase_price <>NULL 作为查询条件时,均 查询不到任何记录

替代的,你可以使用 purchase_price IS NULL 和 purchase_price IS NOT NULL 来查询你想要的记录。如:

执行结果为:

下列是三值逻辑中 AND 和 OR 运算的真值表:

除 COUNT(*) 外,聚合函数只对 NULL 以外的对象进行汇总。

执行如下查询语句,结果已在注释中标出:

当聚合键中包含 NULL 时,也会将 NULL 作为一组特定的数据:

执行结果为:

使用含有 NULL 的列作为排序键时,NULL 会在结果的 开头或末尾 汇总显示:

执行结果为:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6840880.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-29
下一篇 2023-03-29

发表评论

登录后才能评论

评论列表(0条)

保存