在ORACLE中,将空字符串视为NULL,任何值与NULL比较结果都为NULL。例子:
DECLARE
i VARCHAR2(10) := NULL;
v VARCHAR2(10) := 'ABC';
BEGIN
IF(i = v)
THEN
DBMS_OUTPUT.PUT_LINE('相等');
ELSE
DBMS_OUTPUT.PUT_LINE('不等');
END IF;
END;
DBMS输出:不等
DECLARE
i VARCHAR2(10) := '';
v VARCHAR2(10) := 'ABC';
BEGIN
IF( NVL(i,' ') <> NVL(v,' '))
THEN
DBMS_OUTPUT.PUT_LINE('不等');
ELSE
DBMS_OUTPUT.PUT_LINE('相等');
END IF;
END;
DBMS输出:不等
DECLARE
i VARCHAR2(10) := ' ';
v VARCHAR2(10) := 'ABC';
BEGIN
IF(i <> v)
THEN
DBMS_OUTPUT.PUT_LINE('不等');
ELSE
DBMS_OUTPUT.PUT_LINE('相等');
END IF;
END;
DBMS输出:不等
在oracle看来,''就是空值,所以一个非空字符字段就无法插入空字符串了。
因为空值表示缺少数据,所以空值和其它值没有可比性,即不能用等于、不等于、大于或小于和其它数值比较,当然也包括空值本身(但是在decode中例外,两个空值被认为是等价)。
测试空值只能用比较操作符IS NULL 和IS NOT NULL。如果使用带有其它比较操作符的条件表达式,并且其结果依赖于空值,那么其结果必定是NULL。在where条件中,Oracle认为结果为NULL的条件为FALSE,带有这样条件的select语句不返回行,也不返回错误信息。
假设表有2个字段ID,STATE。 ID为主字段,STATE可为空。
create table a
(
ID VARCHAR2(10) not null,
STATE VARCHAR2(3)
)
insert into a ('ID','STATE') values('1','Y');
insert into a ('ID') values('2');
insert into a ('ID') values('3','N');
====================================================
select * from a where a.state='Y'
结果集为
ID SATE
-------------
1 Y
select * from a where a.state<>'Y'
结果集为
ID SATE
-------------
3 N
select * from a where a.state=null
结果集为空
select * from a where a.state is null
结果集为
ID SATE
-------------
2
当查询条件为:a.state<>'Y' 没有出现ID=2的记录,原因是:null是个特殊的值,它不等于0,也不等于空串,它不等于任何值,也不不等于任何值。
分享到:
相关推荐
如果既不指定NULL也不指定NOT NULL,列被认为指定了NULL 在 MySQL 中, 为一个 NOT NULL 字段设置 NULL 值 , 它并不会出错, MySQL 会自动将 NULL值转化为该字段的默认值, 那怕是你在表定义时没有...
C语言头文件 _NULLC语言头文件 _NULLC语言头文件 _NULLC语言头文件 _NULLC语言头文件 _NULLC语言头文件 _NULLC语言头文件 _NULLC语言头文件 _NULLC语言头文件 _NULLC语言头文件 _NULLC语言头文件 _NULLC语言头文件 _...
标题 "修复win10闪退 null.sys" 描述的是一个针对Windows 10系统中Git闪退问题的解决方案。在Windows 10操作系统中,有时用户可能会遇到Git客户端或者其他应用程序因null.sys驱动程序问题而异常退出的情况。这个问题...
本文主要讨论了如何正确判断Java中的String对象是否为null、空值("")以及它们的地址是否相等。在处理字符串时,了解这些概念对于避免程序出错至关重要。 首先,我们需要区分`null`和空字符串`""`。`null`表示变量...
在Windows 10专业版操作系统中,安装Git时遇到找不到`/dev/null`的问题,这通常是由于Windows与Unix/Linux系统之间文件系统结构的差异引起的。`/dev/null`在Linux和Unix-like系统中是一个特殊设备文件,它用于丢弃...
JavaScript 中的 undefined、null、NaN 的区别 在 JavaScript 中,undefined、null、NaN 是三个经常被混淆的概念,但它们有着不同的含义和用途。今天,我们将深入探讨这三个概念的区别和应用。 undefined 在 ...
### 深入Java关键字null #### 一、null代表不确定的对象 在Java语言中,`null`是一个非常重要的关键字,用于表示一个未确定的对象引用。这意味着你可以将`null`赋给任何引用类型变量,而不能将其赋给基本类型变量...
在使用Git时,可能会遇到一个比较特殊的错误提示:“git fatal: open /dev/null or dup failed: No such file or directory”。这个错误通常表明Git在尝试访问或操作`/dev/null`设备文件时遇到了问题。`/dev/null`在...
在命令提示符(cmd)中输入 `sc query null` 可以查询名为“null”的服务是否存在,而 `sc start null` 则尝试启动这个服务。 当Git Bash闪退时,可能是由于以下原因: 1. **系统服务冲突**:Git Bash的运行依赖于...
我们如果将NULL值与另一个NULL值或任何其他值进行比较,则结果为NULL,因为一个不知道是什么的值(NULL值)与另一个不知道是什么的值(NULL值)比较,其值当然也是一个不知道是什么的值(NULL值)。 然而我们通常,使用...
3. 修改这个条件语句,使其不直接赋值为`nil`,而是赋值为字符串`"null"`,例如:`if json == "null" then value = "null" end`。 4. 编译并链接修改后的lua-cjson库,然后在你的项目中使用这个定制版的库。 请注意...
我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作。 为了处理这种情况,MySQL提供了三大运算符: IS NULL: 当列的值是 ...
"null.sys 修复Git异常"这个主题涉及到的是在使用Git时遇到的一种特定问题,即系统文件null.sys可能与Git的正常运行产生了冲突,导致了异常。下面我们将深入探讨这个问题,以及如何进行修复。 首先,我们需要理解...
在Spring MVC框架中,我们经常需要处理JSON数据,这些数据可能包含null值。在某些情况下,为了保持数据的整洁和避免后端处理null值时出现异常,我们需要在数据传输前过滤掉这些null值。本教程将详细介绍如何使用...
在使用Git进行版本控制时,有时可能会遇到一个错误提示:“Null系统资源文件 fatal: open /dev/null or dup failed: No such file or directory”。这个错误信息表明Git在尝试打开或复制/dev/null设备文件时遇到了...
本次更新针对IoTDB的一个关键问题进行了修复,即当查询的第一个值为null时,系统无法正确返回最近一个非null的记录值。这个问题可能对数据分析和应用产生严重影响,因为无法获取到有效的历史数据。 IoTDB的核心功能...
在SQL查询中,当我们尝试计算平均值(AVG)时,遇到null值是一个常见的问题。null值在数据库中表示未知或未定义的数据,而在数学计算中,任何数值与null相加或相乘都会得到null。因此,当你在SQL中对包含null的列...
null.sys是一个系统文件,它在Windows操作系统中扮演着基础驱动的角色,主要负责处理与NULL设备相关的I/O操作。NULL设备通常是一个虚拟设备,用于接收或发送零个字节的数据,主要用于测试或调试目的。在某些情况下,...
### ASP.NET中对数据库表插入NULL空值的问题 在ASP.NET开发过程中,向数据库表插入数据时遇到NULL值处理不当的问题十分常见。本篇文章将详细探讨这个问题,并提供一些解决方案。 #### 问题背景 在ASP.NET应用程序...
Oracle SQL 判断值为空OrNull 判断 Oracle SQL 中判断值为空或 Null 的方法有多种,在本文中,我们将介绍 Oracle 和 SQL Server 中的空值判断方法。 Oracle 中的空值判断 在 Oracle 中,可以使用 `NVL` 函数来...