在Oracle中使用null,''(空字符串),'_'(空格)时,有没有遇到问题?产生疑惑?

1、NULL和''(空字符串)是一个意思

  注:为了便于区分空字符串和空格,下面的示例均以'_'代表空格。

  举个例子:

 --建表
create table tbl_a (col_a varchar2(1), col_b int); -- 造数据
insert into tbl_a values(‘_’, 1); -- 插入空格
insert into tbl_a values(‘’, 2); -- 插入空字符串
insert into tbl_a values(null, 3); -- 插入NULL

  以上SQL执行成功后,执行select来检查:

 select count(*) from tbl_a; -- 结果是 3
select count(*) from tbl_a where col_a = ‘_’; -- 结果是 1
select count(*) from tbl_a where col_a = ‘’; -- 结果是 0
select count(*) from tbl_a where col_a is null; -- 结果是 2

  注意:由于''(空字符串)默认被转换成了NULL,不能使用 = ''作为查询条件。也不能用 is ''。虽然不会有语法错误,但是不会有结果集返回。只能用is null,不等于就是 is not null。

  进一步验证:

select nvl(col_a, ‘a’) from tbl_a; 

  结果:

  原来,在Oracle中,null和''(空字符串)是一个意思。

2、分析函数与NULL

  在使用AVG,MAX,SUM,COUNT等函数时,为NULL的记录会被忽略。

  再插入几条数据:

 insert into tbl_a values(null, null); --  插入NULL
-- 执行成功。
-- 再次证明,’’ 被当作了null处理.
-- 因为该字段是 int 类型,如果是字符串,执行会报错
insert into tbl_a values(‘a’, ‘’);

  查看数据:

select * from tbl_a; 

  结果如下:

  注:_代表空格,其余空白处表示NULL

  验证:

 select AVG(col_b) from tbl_a; -- 结果为 2 ,NULL的纪录行忽略掉了
select MAX(col_b) from tbl_a; -- 结果为 3
select SUM(col_b) from tbl_a; -- 结果为 6
select COUNT(col_b) from tbl_a; -- 结果为 3
select COUNT(col_a) from tbl_a; -- 结果为 2
select COUNT(*) from tbl_a; -- 结果为 5

3、排序时,NULL作为无穷大处理

  例:

select * from tbl_a order by col_b desc ; 

  结果如下:

转载自《oracle中的NULL、''(空字符串)以及'_'(空格)》

【转】oracle中的NULL、''(空字符串)以及'_'(空格)的更多相关文章

  1. Oracle中的NULL、’’(空字符串)以及’_’(空格)

    本文首发于 http://youngzy.com/ 在Oracle中使用 null,''(空字符串),'_'(空格)时,有没有遇到问题?产生疑惑? null和’’(空字符串)是一个意思 注: 为了便于 ...

  2. Oracle中的null与空字符串''的区别

    含义解释:问:什么是NULL?答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零.ORACLE允许任何一种数据类型的字段为空,除了以下 ...

  3. Oracle中长度为0字符串与null等价

    不试不知道,Oracle中,长度为0的字符串'' 居然与null等价! 众所周知,null代表空,什么都不存在,而一个字符串'',虽然长度为0,但毕竟已经是一个字符串,二者怎么能等价,混为一谈呢. 在 ...

  4. DB中字段为null,为空,为空字符串,为空格要怎么过滤取出有效值

      比如要求取出微信绑定的,没有解绑的 未绑定,指定字段为null 绑定的,指定字段为某个字符串 解绑的,有的客户用的是更新指定字段为1,有的客户更新指定字段为‘1’ 脏数据的存在,比如该字段为空字符 ...

  5. 刚从一道题发现的一些东西,PHP笔记,关于extract和null 空字符串

    队友发给我的一道extract变量的最基础的题目,他发现了一些问题,当传入shiyan=&flag=0时出flag,当传入shiyan=0&flag=0时不出flag,传入shiyan ...

  6. Oracle中的null

    测试数据:公司部分员工基本信息

  7. oracle 中的null与''

    1.先看看Null与''在oracle中的表现 C:\Users\zen>sqlplus hr/hr SQL Production :: Copyright (c) , , Oracle. Al ...

  8. 关于JavaScript中0、空字符串、'0'是true还是false的总结

    最近被问到关于js中空字符串是true还是false得问题,一时间没想起来,现在在chrome的console面板上输出代码测试一下. "" == false 结果是true    ...

  9. oracle中空值null的判断和转换:NVL的用法

    1.NULL空值概念 数据库里有一个很重要的概念:空值即NULL.有时表中,更确切的说是某些字段值,可能会出现空值, 这是因为这个数据不知道是什么值或根本就不存在. 2.NULL空值判断 空值不等同于 ...

随机推荐

  1. ORM查询(细致):

    ORM查询(细致): 1.正向查找 ret1=model.Book.objects.first() print(ret1.title) print(ret1.price) print(ret1.pub ...

  2. Ubuntu18.04 卸载mysql5.7

    查看MySQL的依赖项:dpkg --list|grep mysql 要删除上面的这些. 开始卸载: sudo apt-get autoremove --purge mysql-server sudo ...

  3. windows和linux下查看java安装路径

    windows下查看版本:(默认安装路径安装就不需要去配环境变量了) java -version windows下查看安装路径: java -verbose Linux下安装版本查看方式和window ...

  4. kaldi使用thchs30数据进行训练并执行识别操作

    操作系统 : Ubutu18.04_x64 gcc版本 :7.4.0 数据准备及训练 数据地址: http://www.openslr.org/18/ 在 egs/thchs30/s5 建立 thch ...

  5. attempted to return null from a method with a primitive return type (int).

    java接口文件 package com.cyb.ms.mapper; import org.apache.ibatis.annotations.Param; public interface Acc ...

  6. 随意看看AtomicInteger类和CAS

    最近在读jdk源码,怎么说呢?感觉收获还行,比看框架源码舒服多了,一些以前就感觉很模糊的概念和一些类的用法也清楚了好多,举个很简单的例子,我在读Integer类的时候,发现了原来这个类自带缓存,看看如 ...

  7. Flutter 基础控件

    内容: Button Image.Icon Switch.Checkbox TextField Form 1.Button RaisedButton 漂浮按钮 FlatButton 扁平按钮 Outl ...

  8. 【二】Gradle中的gradlew

    gradle 相当于 gradle wapper,是gradle的包装命令 使用gradlew来构建项目被认为是最佳实践. 使用gradlew有以下好处: 当客户机上没有安装gradle时,可以直接用 ...

  9. Oracle 10g&11g安装卸载Oracle Label Security

    Oracle Label Securit简介   Oracle Label Security是内置于数据库引擎中的过程与约束条件集,该数据引擎实施对在单个表或整个模式上的"行"级访 ...

  10. 如何在mac版本的python里安装pip

    mac里面python自带easy_install,在终端里面执行sudo easy_install pip.运行完可以用pip help测试一下是否安装成功,成功安装后,直接pip install ...