在WHERE查询中进行NULL检查

时间:2018-10-12 09:22:23

标签: sql oracle

我需要将此检查放入我的oracle语句中

  AND   country.X_GSA_REGION NOT IN ('Russia','Dummy', 'Other', 'DUMMY')

但是我想提出一种情况,当case.xsa_region不为null时,则该语句应该被求值。

6 个答案:

答案 0 :(得分:1)

我想这就是你的意思:

case.xsa_region is not null
  

但是我想提出一个案例,当case.xsa_region不为null时,则此语句应[b] e求值。

要添加的语句country.X_GSA_REGION NOT IN (...)的条件xsa_region 将确保如果xsa_region不为空,该语句将被求值

但是and可以为空。并且您的语句在开头有一个xsa_region关键字,这意味着您的语句将被添加到现有的 where 子句中。为了在xsa_region is null为null时将整个 where 子句评估为true,我们在我们的两个条件中添加了List<Exception> exs = new List<Exception>(); try { foreach(var a in b) { try { //...some code } catch(Exception ex) { exs.Add(ex); } finally { //...some code } } } catch(Exception e) { Console.WriteLine(e.ToString()); } finally { //...some code } exs.ForEach(ex=> Console.WriteLine(ex.ToString())); ORed

答案 1 :(得分:0)

使用布尔条件也将起作用

update T1 set 
Short = replace(replace(replace(T1.Short, '&trade;','™'),'&reg;','®'),'&copy;','©'),
Long = replace(replace(replace(T1.Long, '&trade;','™'),'&reg;','®'),'&copy;','©');

答案 2 :(得分:0)

我不知道您要在哪种情况下执行此操作,因为您没有提及此事。但是你可以做:

WHERE (xsa_region IS NOT NULL AND 
       country.X_GSA_REGION NOT IN ('Russia','Dummy', 'Other', 'DUMMY')
      )

答案 3 :(得分:0)

您的谓词是蕴涵

(.xsa_region is not null )  - - > (X_GSA_REGION NOT IN ('Russia','Dummy', 'Other', 'DUMMY') )

换句话说,如果XSA区域不为空,则GSA区域一定不在列表中。

A --> B的转换规则为NOT (A) OR B

即您的谓词是(简化列表)

not (XSA_REGION is NOT NULL) OR GSA_REGION not in ('DUMMY');

可以重写为

(XSA_REGION为NULL)或GSA_REGION不在('DUMMY');

示例

select * from tab;        

        ID XSA_REGION GSA_REGION
---------- ---------- ----------
         1            DUMMY      
         2            X          
         3 X          DUMMY      
         4 X          X        

select * from tab
where GSA_REGION not in ('DUMMY');

       ID XSA_REGION GSA_REGION
---------- ---------- ----------
         2            X          
         4 X          X  


--  A --> B  means NOT (A)  OR B
select * from tab
where 
not (XSA_REGION is NOT NULL) OR GSA_REGION not in ('DUMMY');

        ID XSA_REGION GSA_REGION
---------- ---------- ----------
         1            DUMMY      
         2            X          
         4 X          X 

答案 4 :(得分:0)

只需将nvl与无关的参数用作:

AND nvl(country.X_GSA_REGION,'xYzDt') NOT IN ('Russia','Dummy', 'Other', 'DUMMY')

这种情况不会排除country.X_GSA_REGION列的空值。

SQL Fiddle Demo

答案 5 :(得分:0)

只需添加具有现有条件的条件并将其括在括号中

AND (case.xsa_region is not null and country.X_GSA_REGION NOT IN ('Russia','Dummy', 'Other', 'DUMMY'))