Sql 检查2个值以查找相同的字符串
我试图比较两个varchar字段,看看它们是否相似,但在任何地方都很难找到答案。我试过使用SOUNDEX和DIFFERENCE,但它们不能满足我的需要 这就是我想做的:-Sql 检查2个值以查找相同的字符串,sql,compare,Sql,Compare,我试图比较两个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" 这通常是一个排序代码和帐号,但它们经常在字段中交替出现,所以我试图将它们剔除 任何帮
Column 1 Column 2 Column 3
123 456 456 123 Should show 1 or "Yes"
123 456 789 987 Should show 0 or "No"
这通常是一个排序代码和帐号,但它们经常在字段中交替出现,所以我试图将它们剔除
任何帮助都很好不确定您使用的是哪种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
如果您试图分离出顺序不正确的匹配数字,那么当行不同时,您可以给出第一个和第二个
,然后是
值。如果您知道每个字符串部分的长度,您可以使用类似SUBSTR的方法来比较四种不同的组合。但这只是一种肮脏的检查方式。可能有一些更干净的方法。这就是为什么我不将此作为答案发布;)您只想说明完整匹配,即“12”包含在“123”中,应该是“1”还是需要用空格分隔的完整块才能相似?您使用的是哪种RDBMS?为什么不使用第2列中的SELECT*,其中第1列为第2列?这应该会带来不同的结果values@DevN00Bcol1的值是完整的字符串“123 456”,根据问题中的示例,他希望将“123 456”视为与“456 123”匹配@Chris Upton-mysql或sql server?