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现在有修剪功能来删除前导和尾随空格!