0

我正在尝试比较 2 个 varchar 字段以查看它们是否相似,并且尝试在任何地方找到我的答案时遇到了一些麻烦。我试过使用 SOUNDEX 和 DIFFERENCE,但它们并没有给我我需要的东西。

这就是我想要做的: -

Column 1   Column 2    Column 3
123 456    456 123    Should show 1 or "Yes"
123 456    789 987    Should show 0 or "No"

这通常是排序代码和帐号,但它们经常在字段中出现交换,所以我试图将它们剔除

任何帮助都会很棒

4

1 回答 1

0

不确定您使用的是哪个 RDBMS,但这在 SQL Server 中可以拆分字段:

DECLARE @str VARCHAR(10) = '123 456'
SELECT LEFT(@str,CHARINDEX(' ',@str)-1)''
        ,RIGHT(@str,CHARINDEX(' ',REVERSE(@str))-1)

在您的情况下,假设双方必须匹配:

SELECT col1
      ,col2
      ,CASE WHEN col1 = col2 THEN 1
            WHEN LEFT(col1,CHARINDEX(' ',col1)-1) = RIGHT(col2,CHARINDEX(' ',REVERSE(col2))-1)
               AND LEFT(col2,CHARINDEX(' ',col2)-1) = RIGHT(col1,CHARINDEX(' ',REVERSE(col1))-1) THEN 1
            ELSE 0
       END
FROM YourTable  

如果您尝试隔离无序的匹配数字,则可以为第一行和第二WHEN行提供不同的THEN值。

于 2013-07-22T15:46:34.663 回答