1

我使用 Oracle 和 MySql,所以如果您对这两个代码有任何答案,请告诉我,

问题:

我在一个名为的表中有 2 列: USers

Column#1= 名称 Column#2= UCNames

此列表包含来自不同来源但部分匹配的名称,例如:

名称


亚历克斯·琼斯·马尔菲克斯

UCNames


亚历克斯·乔恩斯迈克·马费克斯

我想比较两列并根据以下属性找到匹配项:

在前4个字母和最后 4个单词中搜索并存储在名为:verifiyed的新列中

谢谢

4

2 回答 2

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 个字符,只需将 Locate es 替换为 4。

于 2013-10-02T11:45:41.343 回答
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)
于 2013-10-02T13:08:38.060 回答