我想从表中获取列值不为空的记录。
假设以下数据点
**my_table (table_name)**
**my_column(column_name)**
abc
def
null
XYZ
所以我想找到非空或空的记录。基本上我的输出必须是
abc
def
xyz
我尝试的是
select * from my_table where my_column!=null & my_column!='';
这是返回0条记录
所以我尝试搜索并发现Oracle将空字符串视为空并使用以下查询
select * from my_table where trim(my_column) is not null;
除了具有空值的记录外,它返回了所有结果。
我甚至希望空字符串从结果中消失。我尝试了上面所有可能的组合,但没有得到理想的结果。
答案 0 :(得分:1)
假设my_column
是VARCHAR2
,听起来只是想要
SELECT *
FROM my_table
WHERE my_column IS NOT NULL
您永远不想检查my_column = null
或my_column != null
。无论my_column
的值如何,这些谓词将始终评估为false。没有任何值等于NULL
,并且任何值都不等于NULL
,甚至不等于NULL
值。 Oracle没有空字符串的概念。您要么拥有NULL
,要么拥有一个包含一个或多个空格或其他填充字符的字符串。因此,无需检查值是否为空,只需检查它是否为NULL
。