Oracle SQL语法 - 检查多个列是否为IS NOT NULL

时间:2011-12-21 20:34:05

标签: sql oracle syntax

是否有更简洁的语法来检查多列是否为空?我正在寻求简化

weight IS NOT NULL AND
weight_unit IS NOT NULL AND
length IS NOT NULL AND
width IS NOT NULL AND
height IS NOT NULL AND
dimensional_unit IS NOT NULL

更短的东西。

使用Oracle,如果它是相关的。

6 个答案:

答案 0 :(得分:14)

使用De Morgan's law

  

NOT(A或B)=(不是A)和(不是B)

你节省了20个字符;)

NOT (
weight IS NULL OR
weight_unit IS NULL OR
length IS NULL OR
width IS NULL OR
height IS NULL OR
dimensional_unit IS NULL 
)

答案 1 :(得分:2)

据我所知,没有这样的语法。

但如果所有这些都是数字,你可以使用这个技巧:

weight + weight_unit + length + width + height + dimensional_unit is not null

答案 2 :(得分:0)

ALTER TABLE X
   ADD CONSTRAINT C_X_NN
      CHECK (  (
               DECODE (weight, NULL, 0, 1) +
               DECODE (weight_unit, NULL, 0, 1) +
               DECODE (length      , NULL, 0, 1) +
               DECODE (width     , NULL, 0, 1) +
               DECODE (height      , NULL, 0, 1) +
               DECODE (dimensional_unit , NULL, 0, 1)
               ) = 0
            );

答案 3 :(得分:-1)

如果你想检查所有列是否为NOT NULL,那么你可以先连接你的列,然后测试一次IS NOT NULL,例如:

weight || weight_unit || length || width || height || dimensional_unit IS NOT NULL

这将检查这些字段中的所有值是否总共不为NULL。

如果只测试它们之间是否存在NULL,那么我认为问题的原始陈述仍然是最好的方法。

答案 4 :(得分:-1)

我试图解决这个问题,             如果所有列/变量都是numeric或varchar2类型,那么我们可以在sql,pl / sql中使用以下方式:

LENGTH(COL1||COL2||COL3) IS NOT NULL 

希望这会对你有所帮助。

答案 5 :(得分:-2)

这个怎么样..... coalesce(field1,field2,....,fieldn)不为空

我认为这可以达到目的!!!!