有没有更简明的语法来检查多个列是否不为空?我想要简化。
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。
应用 德摩根定律:
非(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
)
weight + weight_unit + length + width + height + dimensional_unit is not null
A || B
将变为A
。因此,如果任何一个列不为空,'C1 || C2 || C3 || C4'就不会为空。 - Shannon SeveranceALTER 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
);
我尝试解决这个问题, 如果所有列/变量都是数字或varchar2类型,则可以在sql、pl/sql中使用以下方式:
LENGTH(COL1||COL2||COL3) IS NOT NULL
weight || weight_unit || length || width || height || dimensional_unit IS NOT NULL
这将检查这些字段中所有值的总和是否不为NULL。
如果只是测试它们中是否可能有一个NULL,那么我认为你在问题中提出的原始语句仍然是最好的方法。
'a' || null = 'a'
)。 - Allan这个怎么样...... 如果coalesce(field1,field2,....,fieldn)不为空,则返回
我认为这可以达到目的!!!
ThingWeight
和ThingSize
设置单独的表,这样如果一个物品的重量未知/不适用等,则不要向ThingWeight
表中添加行。 - onedaywhen