检查2个值以查找相同的字符串

时间:2013-07-22 15:21:26

标签: sql compare

我正在尝试比较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"

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

任何帮助都会很棒

1 个答案:

答案 0 :(得分: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值。