我正在尝试比较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"
这通常是一个排序代码和帐号,但它们经常在字段中交换出来,所以我试图将它们清除掉
任何帮助都会很棒
答案 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
值。