sql - 具有空字符串的Oracle NVL

标签 sql oracle null nvl

我有此表,其中NULL是NULL值,而不是字符串NULL:

MYCOL
--------
NULL
example

为什么此查询不返回NULL行?
select * from example_so where nvl(mycol, '') = '';

最佳答案

''再次是Oracle中的NULL,因为Oracle不像其他高级语言或DBMS一样支持空字符串。

您需要使用IS NULLIS NOT NULL查找NULL/空字符串

尽管它在语法上是有效的,但是没有其他关系运算符可对NULL起作用。 SQLFiddle Demo

它一定要是,

select * from example_so where mycol IS NULL

编辑:按照Docs

Oracle Database currently treats a character value with a length of zero as null. However, this may not continue to be true in future releases, and Oracle recommends that you do not treat empty strings the same as nulls.

关于sql - 具有空字符串的Oracle NVL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26274750/

相关文章:

PHP MySQL 查询在酒店预订系统中选择可用房间

sql - 将多个表合并在一起,正确的连接类型?

c# - 在代码优先迁移中向具有现有行的表添加唯一索引时处理重复项

sql - 合并查询返回 ORA-30926 : unable to get a stable set of rows in the source tables

r - R中NULL和character(0)有什么区别?

python - pySpark 替换行子集上的空值

mysql - 如何从mysql数据库获取当前时间的数据

SQL 在顶部有一个特定记录,所有其他记录在下面

mysql - sql连接同一个表中的2行

swift - 应用仅在设备上崩溃