在 SQL 查询中避免多个 "OR's"

Avoiding multiple "OR's" in a SQL query

我有以下有效的 SQL 查询,它向 table KundenKontaktDaten 添加了约束 MindestensEinKontakt_CHECK。约束确保属性 Twitter_IdGoogle_IdFacebook_IdSkype_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's" 并以更紧凑的方式编写查询。有人知道这样做的方法吗?

coalesce returns 第一个非 null 参数,或者 null 如果它们都是 null。您可以在 alter table 语句中使用它:

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