sql - 如何不从不喜欢条件的地方排除 null?

标签 sql oracle oracle10g

在查询的 where 子句中,如果我在 where 子句中包含条件,例如

where 
      T2.Comments not like '%ABC%' 
  and T2.Comments not like '%xyz%'

它还过滤掉空白/空注释。
我不希望它过滤掉空值或空白。

什么是过滤掉的另一种方法,例如。 ABCxyz并且也不排除空值/空白?

其余的 where caluse ..(在添加底部两个条件后,我没有得到任何空值。
Where
    T1.OUT_NO = T2.OUT_NO 
AND T3.OUT_NO = T1.OUT_NO 
AND CAUSE_CAP.CAUSE_NO NOT IN (1,3,5,7,9) 
AND ("T1"."TIME_STAMP">=TO_DATE ('01-04-2013 00:00:00', 'DD-MM-YYYY HH24:MI:SS') AND "T1"."TIME_STAMP"<TO_DATE ('06-04-2013 23:59:59', 'DD-MM-YYYY HH24:MI:SS')) 
AND NOT (CAUSE_CAP.CAUSE_NO = 13 AND START_TABLE.TABLE_NO = 83)
AND T2.Comments not like '%ABC%'
AND T2.Comments not like '%XYZ%'

最佳答案

只需添加 NULL作为一个具体案例。 [编辑以展示如何将这种方法推广到 OP 更复杂的查询]

Where
    T1.OUT_NO = T2.OUT_NO 
AND T3.OUT_NO = T1.OUT_NO 
AND CAUSE_CAP.CAUSE_NO NOT IN (1,3,5,7,9) 
AND ("T1"."TIME_STAMP">=TO_DATE ('01-04-2013 00:00:00', 'DD-MM-YYYY HH24:MI:SS') AND "T1"."TIME_STAMP"<TO_DATE ('06-04-2013 23:59:59', 'DD-MM-YYYY HH24:MI:SS')) 
AND NOT (CAUSE_CAP.CAUSE_NO = 13 AND START_TABLE.TABLE_NO = 83)
AND (T2.Comments IS NULL OR 
        (T2.Comments not like '%ABC%'
         AND T2.Comments not like '%XYZ%')
    )

关于sql - 如何不从不喜欢条件的地方排除 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15882329/

相关文章:

sql - 在两个 varchar 字段上创建唯一的不区分大小写的约束

php/mysql 邮政编码邻近搜索

java - 通过jsp执行SQL语句不给出本地时间

mysql - 根据另一个表中的 count(*) 值更新表中的多个列

c# - 这个 SQL 需要采用什么格式才能让 Oracle 接受它?

sql - 单行子查询返回多行oracle

sql - 查询关系模型

c# - Oracle 数据库 TNS 键 'data source' 的值长度超出了它的限制 '128'

sql - 对单个表中具有不同状态代码的记录进行计数

oracle - ORA-01855 : AM/A. M. 或 PM/P.M.必需的