如何在SQL Server中比较两列是否相等?

Ori*_*ian 23 sql t-sql sql-server

我有两个列在某些条件下连接在一起,但我还想检查两个列,看看两个其他列是否相同,然后返回一个位字段,如果它们是.

有比使用CASE WHEN更简单的解决方案吗?

理想情况下我可以使用:

    SELECT Column1 = Column2 AS MyDesiredResult
      FROM Table1
INNER JOIN Table2 ON Table1.PrimaryKey = Table2.ForeignKey
Run Code Online (Sandbox Code Playgroud)

Ken*_*ite 54

CASE对此有什么问题?为了查看结果,您至少需要一个字节,这就是您使用单个字符获得的结果.

CASE WHEN COLUMN1 = COLUMN2 THEN '1' ELSE '0' END AS MyDesiredResult
Run Code Online (Sandbox Code Playgroud)

应该工作正常,并且为了所有意图和目的完成与使用位字段相同的事情.

  • 我一直在寻找简短的东西.案例似乎对我的口味过长. (3认同)
  • 我发布了实际的 CASE WHEN 声明 - 你需要多短?几个字符的 SQL 语句长度差异是没有意义的,并且在不需要的地方简洁会使您的代码以后更难维护。避免使用正确的结构来尝试找到一个要键入的几个字母短的结构通常是一个坏主意。 (2认同)

小智 8

CASE WHEN是更好的选择

SELECT 
  CASE WHEN COLUMN1 = COLUMN2 
    THEN '1' 
    ELSE '0' 
  END 
  AS MyDesiredResult
FROM Table1
INNER JOIN Table2 ON Table1.PrimaryKey = Table2.ForeignKey
Run Code Online (Sandbox Code Playgroud)


小智 5

IIF的使用?这取决于 SQL Server 的版本。

SELECT
IIF(Column1 = Column2, 1, 0) AS MyDesiredResult
FROM Table;
Run Code Online (Sandbox Code Playgroud)