我编写了一个 SQL 来从 A 列不为空的 oracle 数据库中查询表垫。A 列是 varchar,其默认值为 ' '。我写了下面的sql:
select * from mat where matnr='test' and A <>'' and A <> ' '
但它返回一个空数据集。
然后我跑了:
select * from mat where matnr='test' and A <> ' '
这个查询有效。那么是什么原因呢?谢谢。
在 Oracle 中,''
表示NULL
. 任何与 NULL 的直接比较都返回 NULL 而不是 TRUE 或 FALSE,所以你不能说A <> ''
- 你必须说A IS NOT NULL
。
另一种可能性是使用该NVL
功能,替换NULL
为' '
,这样您就可以说
select * from mat where matnr='test' and NVL(A, ' ') <> ' '
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句