我使用的是Oracle和MySql,所以如果您对这两个代码都有任何答案,请告诉我们,
问题:
我在一个表中有两列名为:USers
第1列=姓名 第2列= UCNames
此列表包含来自不同来源但部分匹配的名称,如:
名称
Alex 琼斯 Marfex
UCNames
Alex Jonnes Mike Marfex
我想比较两个列并根据以下属性找到匹配项:
在首先 4上搜索字母和4 最后一个字并存储在名为 verifiyed
由于
答案 0 :(得分:0)
这为您提供了字符串中的第一个单词
Substring(Col,1,(Locate (' ',Col + ' ')-1)) First
这将为您提供字符串中的最后一个单词
Reverse(Substring(Reverse(Col), 1, Locate(' ',Reverse(Col)) - 1)) Last
所以你的比较可能是
Where
Substring(Col1,1,( Locate(' ',Col1 + ' ')-1))
= Substring(Col2,1,( Locate(' ',Col2 + ' ')-1))
And
Reverse(Substring(Reverse(Col1), 1, Locate(' ',Reverse(Col1)) - 1))
= Reverse(Substring(Reverse(Col2), 1, Locate(' ',Reverse(Col2)) - 1))
我选择了一些似乎更安全的文字,只需要更多的努力就可以做到。如果您确实要保留4个字符,只需将定位符替换为4。
答案 1 :(得分:0)
根据@asantaballa的回答,但使用MySQL SUBSTRING_INDEX函数: -
WHERE SUBSTRING_INDEX(Col1, ' ', 1) = SUBSTRING_INDEX(Col2, ' ', 1)
AND SUBSTRING_INDEX(Col1, ' ', -1) = SUBSTRING_INDEX(Col2, ' ', -1)
或粗略检查前4个字符和后4个字: -
WHERE SUBSTRING(Col1, 1, 4) = SUBSTRING(Col2, 1, 4)
AND SUBSTRING_INDEX(Col1, ' ', -4) = SUBSTRING_INDEX(Col2, ' ', -4)