Oracle - 获取非空值

时间:2014-04-30 18:16:36

标签: oracle oracle10g oracle-sqldeveloper

我想从表中获取列值不为空的记录。

假设以下数据点

**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;

除了具有空值的记录外,它返回了所有结果。

我甚至希望空字符串从结果中消失。我尝试了上面所有可能的组合,但没有得到理想的结果。

1 个答案:

答案 0 :(得分:1)

假设my_columnVARCHAR2,听起来只是想要

SELECT *
  FROM my_table
 WHERE my_column IS NOT NULL

您永远不想检查my_column = nullmy_column != null。无论my_column的值如何,这些谓词将始终评估为false。没有任何值等于NULL,并且任何值都不等于NULL,甚至不等于NULL值。 Oracle没有空字符串的概念。您要么拥有NULL,要么拥有一个包含一个或多个空格或其他填充字符的字符串。因此,无需检查值是否为空,只需检查它是否为NULL