避免在一个SQL查询中出现多个 "OR"。

问题描述 投票:0回答:1

我有下面的SQL查询,它增加了一个约束。MindestensEinKontakt_CHECK 列表 KundenKontaktDaten. 该约束条件确保至少有一个属性为 Twitter_Id, Google_Id, Facebook_Id, Skype_IdTelefonnummer 不是空的。

ALTER TABLE KundenKontaktDaten 
    ADD CONSTRAINT MindestensEinKontakt_CHECK 
        CHECK (Twitter_Id IS NOT NULL OR Google_Id IS NOT NULL OR 
               Facebook_Id IS NOT NULL OR Skype_Id IS NOT NULL OR 
               Telefonnummer IS NOT NULL);

我想避免多个 "OR",把查询写得更简洁。有谁知道有什么方法可以做到这一点?

sql db2
1个回答
3
投票

coalesce 返回第一个非null 争论,或 null 如果他们都 nulls. 你可以利用它在你的 alter table 声明:

ALTER TABLE KundenKontaktDaten
ADD CONSTRAINT MindestensEinKontakt_CHECK 
CHECK (COALESCE(Twitter_Id, Google_Id, Facebook_Id, Skype_Id, Telefonnummer) IS NOT NULL);
© www.soinside.com 2019 - 2024. All rights reserved.