【问题标题】:Avoiding multiple "OR's" in a SQL query在 SQL 查询中避免多个“OR”
【发布时间】:2020-09-22 09:41:39
【问题描述】:

我有以下工作 SQL 查询将约束 MindestensEinKontakt_CHECK 添加到表 KundenKontaktDaten。约束确保至少属性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”并以更紧凑的方式编写查询。有人知道这样做的方法吗?

【问题讨论】:

  • 你可以使用 COALESCE (a, b,c,d...) 不为空

标签: sql db2 ddl check-constraints


【解决方案1】:

coalesce 返回第一个非null 参数,如果它们都是nulls,则返回null。您可以在 alter table 声明中使用它:

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

【讨论】:

  • 虽然注意这只会缩短语句的文本,并且不太可能改变查询计划
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-03
  • 1970-01-01
  • 2015-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多