Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 检查2个值以查找相同的字符串_Sql_Compare - Fatal编程技术网

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

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" 这通常是一个排序代码和帐号,但它们经常在字段中交替出现,所以我试图将它们剔除 任何帮

我试图比较两个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"
这通常是一个排序代码和帐号,但它们经常在字段中交替出现,所以我试图将它们剔除


任何帮助都很好

不确定您使用的是哪种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?