我试图弄清楚为什么下面的SQL语句没有返回oracle中的值do
Select 'do' from dual
where trim(' ') = ''
在哪里
Select 'do' from dual
where trim(' a ')='a'
返回值do。
答案 0 :(得分:7)
答案 1 :(得分:1)
零长度字符串被视为null,并且您无法通过Oracle中的(in)相等比较空值,因为它们以特殊方式处理。
文档参考:NULLS in conditions
因此,这个预期不起作用:
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>