Sql server SQL字符串相同,但大小写等于方法返回false

Sql server SQL字符串相同,但大小写等于方法返回false,sql-server,tsql,Sql Server,Tsql,我使用SQL比较两列,如果它们相等,则返回TRUE/FALSE 在某些情况下,两列包含完全相同的字符串(没有空格或任何内容),但我仍然得到false 原因可能是什么 我正在使用以下代码: CASE WHEN column1 = column2 THEN 0 ELSE 1 END AS [check] 事实上,一种可能的解释是,其中一个/两个字符串都有前导和/或尾随空格。在SQL Server上,您可以尝试: CASE WHEN LTRIM(column1) = LTRIM(column2) T

我使用
SQL
比较两列,如果它们相等,则返回
TRUE
/
FALSE

在某些情况下,两列包含完全相同的字符串(没有空格或任何内容),但我仍然得到false

原因可能是什么

我正在使用以下代码:

CASE WHEN column1 = column2 THEN 0 ELSE 1 END AS [check]

事实上,一种可能的解释是,其中一个/两个字符串都有前导和/或尾随空格。在SQL Server上,您可以尝试:

CASE WHEN LTRIM(column1) = LTRIM(column2) THEN 0 ELSE 1 END AS [check]
如果上面没有检测到有问题的记录,则尝试检查长度:

CASE WHEN LEN(column1) = LEN(column2) THEN 0 ELSE 1 END AS [check2]

尽管显示的值不同,但值也不同

使用T-SQL,运行如下查询以查看底层原始值的确切差异:

SELECT
     column1
    , CAST(column1 AS varbinary(MAX)) AS column1Binary
    , column2
    , CAST(column2 AS varbinary(MAX)) AS column2Binary
FROM dbo.YourTable;

这将揭示潜在的差异,如制表符或细微的字符差异。

将两列转换为小写,并修剪空白。您还可以检查两列的字符串长度,以查看它们之间是否有任何差异(可能是空白)。您应该通过将两列粘贴到Notepad++并启用“显示不可见字符”来比较字符串。它们是不同的,它们看起来是相同的。另一个例子是,它们可能使用相同的gliph,但它们是不同的:然后可能有隐藏的字符,你看不见。检查两个字符串的
LEN
。或者,可能有看起来相似但实际上不相同的字符。注意-tsql现在有修剪功能来删除前导和尾随空格!