是否有更简洁的语法来检查多列是否为空?我正在寻求简化
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,如果它是相关的。
答案 0 :(得分:14)
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)不为空
我认为这可以达到目的!!!!