我的查询用<>到/ NOT IN()子句不返回任何值?

时间:2018-12-12 18:21:29

标签: sql oracle

我有一个包含以下数据的表:

Value_ID      VALUE        CODE       HR       DATE      TYPE
   1           0           REG       01:00AM   1/1/18    HI
   2           4           REG       01:00AM   1/1/18    BYE
   3          null         REG       02:00AM   1/1/18    HELLO
   4                       REG       03:00AM   1/1/18    HI
   5           7           REG       04:00AM   1/1/18    BYE

我试图排除任何空白(“或”)的值;但是,当我尝试使用NOT IN子句或NOT EQUAL TO(<>)比较时,我返回0项。我正在使用的查询如下:

select *
  from value
 WHERE value is not NULL
   AND value <> ' ' AND value

<>'';

我也尝试过:

 select *
   from value
  where value is not null
    and valuenot IN ('', ' ');

当我这样做时,将返回以下内容:

 Value_ID      VALUE        CODE       HR       DATE      TYPE

Oracle是否出于某种原因不喜欢该符号?

谢谢。

2 个答案:

答案 0 :(得分:3)

这可以做到:

select *
  from tablename
 WHERE LENGTH(TRIM(value)) > 0

我在另一个可能对您有所帮助的问题中找到了一个非常有趣的答案:
empty string in oracle

答案 1 :(得分:2)

您可以查询

SELECT *
FROM your_table
WHERE TRIM(value) IS NOT NULL;

因为空的TR​​IM在Oracle中导致NULL。

致谢