You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle中空字符串''与null是否相同及查询、区分相关问题

Oracle中空字符串与NULL的相关问题解答

场景背景

我们在Oracle数据库中创建了包含id和name列的PRODUCTS表,执行了以下插入语句:

insert into PRODUCTS(id,name)
values(1,'');

insert into PRODUCTS(id,name)
values(2,null);

insert into PRODUCTS(id,name)
values(3,'product1');

查询后得到结果:

IDName
1(null)
2(null)
3product1

针对该场景的四个问题解答如下:

1. 能否查询出name为''的行?

不能。Oracle会自动将空字符串''转换为NULL存储,插入后这行的name实际是NULL,无法通过name = ''这类条件查询到对应的行。

2. 能否查询出name为null的行?

可以,但必须使用IS NULL条件,不能用name = NULL(因为NULL不等于任何值,包括它自己)。执行以下SQL即可查询到目标行:

SELECT * FROM PRODUCTS WHERE name IS NULL;

该语句会返回id为1和2的两行数据。

3. Oracle中的''与null是否相同?

是的,在Oracle中两者等价。无论你插入的是空字符串''还是NULL,Oracle都会将其统一存储为NULL,查询时也无法区分这两种输入的差异。

4. 能否在Oracle包中区分''与null?

不能。Oracle的SQL和PL/SQL引擎都会把空字符串当作NULL处理,即使在PL/SQL包的逻辑里,也无法区分传入的是空字符串还是NULL,两者的行为完全一致。


内容的提问来源于stack exchange,提问作者Piyush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 05:34:55