【问题标题】:T-SQL MERGE statement - ... WHEN MATCHED AND ... OR ... - are brackets (parentheses) required?T-SQL MERGE 语句 - ... WHEN MATCHED AND ... OR ... - 是否需要括号(圆括号)?
【发布时间】:2014-08-11 08:29:48
【问题描述】:

在 t-SQL MERGE 语句的以下小节中,是否需要括号(圆括号)?

  WHEN MATCHED  
           AND (  Target.CustomerName <> Source.CustomerName 
               OR Target.Planet <> Source.Planet
               )
  THEN
  UPDATE SET
        Target.CustomerName = Source.CustomerName
      , Target.Planet = Source.Planet

我问是因为我正在使用 t-SQL 格式化工具 (ApexSQL),它会将这些括号标识为不必要的,因此将它们删除,因此:

  WHEN MATCHED  
           AND Target.CustomerName <> Source.CustomerName 
           OR  Target.Planet <> Source.Planet

  THEN
  UPDATE SET
        Target.CustomerName = Source.CustomerName
      , Target.Planet = Source.Planet 

但是,这与我对 AND、OR 逻辑的基本理解不符...这是特例吗?

提前谢谢你!

【问题讨论】:

  • 它是可选的,但是,当你混合 AND 和 OR 时,为了清楚起见,总是使用 ()。

标签: sql sql-server tsql merge


【解决方案1】:

是的,它是可选的。使用WHEN MATCHED的sintax

WHEN MATCHED [ AND <clause_search_condition> ]

clause_search_condition 单独评估

【讨论】:

    猜你喜欢
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 2021-03-22
    • 2015-08-26
    • 2015-02-17
    • 2020-09-07
    • 2010-09-14
    相关资源
    最近更新 更多