我试图弄清楚为什么下面的 SQL 语句在 oracle 中没有返回值 do
Select 'do' from dual
where trim(' ') = ''
然而
Select 'do' from dual
where trim(' a ')='a'
返回值做。
零长度字符串被视为空值,您不能在 Oracle 中通过(不)等式比较空值,因为它们以特殊方式处理。
文档参考:条件中的 NULLS
因此,这个预期不起作用:
Select 'do' from dual where trim(' ') = ''
试试这个:
10:39:58 SYSTEM@dwh-prod> select * from dual where trim(' ') is null
10:40:02 2 /
D
-
X
Elapsed: 00:00:00.07
10:40:04 SYSTEM@dwh-prod> select * from dual where '' is null
10:40:11 2 /
D
-
X
Elapsed: 00:00:00.02
10:40:11 SYSTEM@dwh-prod>