在SQL我試圖檢查以下條件SQL是條件的快捷方式?
WHERE (col1 is null and col2 is not null) or (col1 is not null and col2 is null)
還有什麼能讓這種情況下更短的邏輯呢?
的什麼,我試圖做
說明我有2個表每個表有3列
Table1(Ft) Table2(Dt)
ID ID
F1 D1
F2 D2
F3 D3
在F列是整數類型d列是時間類型
F1 correspondes to D1
F2 correspondes to D2
F3 correspondes to D3
我想選擇其中F爲空且D填充或D爲空且F填充的行 以下是完整代碼,使其更短!
SELECT f1,
f2,
f3,
d1,
d2,
d3
FROM ftable Ft
INNER JOIN dtable Dt
ON Ft.ID= Dt.ID
WHERE (((d1 IS NULL
AND f1 IS NOT NULL)
OR (d1 IS NOT NULL
AND f1 IS NULL))
OR ((d2 IS NULL
AND f2 IS NOT NULL)
OR (d2 IS NOT NULL
AND f2 IS NULL))
OR ((d2 IS NULL
AND f2 IS NOT NULL)
OR (d3 IS NOT NULL
AND f3 IS NULL)))
我不知道有什麼方法可以縮短它 - 有與沒有關聯的實際成本謂詞的長度。這兩個發佈的答案(迄今爲止)都有不同程度的缺陷,並且可能會掩蓋他們的意圖(如果他們確實工作的話)。寫明確的代碼,您(或其他人)可以在6個月的時間內清楚地閱讀和理解。 –
@Damien_The_Unbeliever剛剛做到了! – user1570048