在 SQL 查询中避免多个 "OR's"
Avoiding multiple "OR's" in a SQL query
我有以下有效的 SQL 查询,它向 table KundenKontaktDaten
添加了约束 MindestensEinKontakt_CHECK
。约束确保属性 Twitter_Id
、Google_Id
、Facebook_Id
、Skype_Id
和 Telefonnummer
中至少有一个不为空:
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);
我有以下有效的 SQL 查询,它向 table KundenKontaktDaten
添加了约束 MindestensEinKontakt_CHECK
。约束确保属性 Twitter_Id
、Google_Id
、Facebook_Id
、Skype_Id
和 Telefonnummer
中至少有一个不为空:
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);