我使用 Oracle 和 MySql,所以如果您对这两个代码有任何答案,请告诉我,
问题:
我在一个名为的表中有 2 列: USers
Column#1= 名称 Column#2= UCNames
此列表包含来自不同来源但部分匹配的名称,例如:
名称
亚历克斯·琼斯·马尔菲克斯
UCNames
亚历克斯·乔恩斯迈克·马费克斯
我想比较两列并根据以下属性找到匹配项:
在前4个字母和最后 4个单词中搜索并存储在名为:verifiyed的新列中
谢谢
这为您提供了字符串中的第一个单词
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 个字符,只需将 Locate es 替换为 4。
基于@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)