Sql 我认为这是一个很好的方法。我不喜欢用永远不会出现的值替换NULL的概念。我可以承认我写过像COALESCE(姓“xxxxxxx”)=SomeColumn@Cato这是我主要关心的问题,我写的参数的值从来都不存在,这是愚蠢的。我会将其标记为正确,希望没有性能

Sql 我认为这是一个很好的方法。我不喜欢用永远不会出现的值替换NULL的概念。我可以承认我写过像COALESCE(姓“xxxxxxx”)=SomeColumn@Cato这是我主要关心的问题,我写的参数的值从来都不存在,这是愚蠢的。我会将其标记为正确,希望没有性能,sql,sql-server,Sql,Sql Server,我认为这是一个很好的方法。我不喜欢用永远不会出现的值替换NULL的概念。我可以承认我写过像COALESCE(姓“xxxxxxx”)=SomeColumn@Cato这是我主要关心的问题,我写的参数的值从来都不存在,这是愚蠢的。我会将其标记为正确,希望没有性能问题。 EXISTS( SELECT * FROM ExistTable WHERE ExTableFieldA = @SomeGuid AND ExTableFieldB


我认为这是一个很好的方法。我不喜欢用永远不会出现的值替换NULL的概念。我可以承认我写过像COALESCE(姓“xxxxxxx”)=SomeColumn@Cato这是我主要关心的问题,我写的参数的值从来都不存在,这是愚蠢的。我会将其标记为正确,希望没有性能问题。
EXISTS(
   SELECT 
      * 
   FROM 
      ExistTable
   WHERE
      ExTableFieldA = @SomeGuid AND
      ExTableFieldB = MainTableFieldB AND
      ExTableFieldA <> (
                         CASE
                           WHEN MainTableFieldZ = 10 THEN MainTableFieldYYY
                           ELSE NULL
                         END
                       )
)
WHERE ExTableFieldA = @SomeGuid AND
      ExTableFieldB = MainTableFieldB AND
      (MainTableFieldZ <> 10 OR ExTableFieldA <> MainTableFieldYYY)
ISNULL(ExTableFieldA,'') <> (
                         CASE
                           WHEN MainTableFieldZ = 10 THEN MainTableFieldYYY
                           ELSE ''
                         END
                       )