我使用Oracle和MySQL,所以如果你有两个代码的任何答案,请让我知道,SQL比赛的第一部分和比较
问题:
我在一个名为表2列:用户
列#1 =名称 柱#2 = UCNames
该列表包含来自不同的来源,但部分地匹配名称类似:
个名称
亚历克斯·琼斯Marfex
UCNames
亚历 Jonnes表示麦克Marfex
我想基于以下属性比较列的都找到匹配:
在第一 4搜索字母和4个遗言和所谓的新列来存储: verifiyed
感谢
我使用Oracle和MySQL,所以如果你有两个代码的任何答案,请让我知道,SQL比赛的第一部分和比较
问题:
我在一个名为表2列:用户
列#1 =名称 柱#2 = UCNames
该列表包含来自不同的来源,但部分地匹配名称类似:
个名称
亚历克斯·琼斯Marfex
UCNames
亚历 Jonnes表示麦克Marfex
我想基于以下属性比较列的都找到匹配:
在第一 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个字符,只需更换与4
如果使用MySQL,那么SUBSTRING_INDEX函数将是适当的。 – Kickstart
谢谢,@KickStart。大多数SQL Server用户在这里。根据您的评论进行编辑。 – asantaballa
没问题。 Substring_index返回字符串,所以你不需要使用子字符串。我的SQL Server很差,我的Oracle大约过了6年! – Kickstart
基于由@asantaballa的答案找到ES,但使用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)
你打算比较什么?两列它自己或另一个变量与这两列 – dcp1986
当检查对最后4个字你的例子不会验证。尽管可以编写一些sql来将其拆分为单词(如果单词只用空格分隔而没有标点符号,则不是主要问题),但是如何在不存在4个单词的情况下处理搜索(或者对于第一个单词部分,没有4首字母)? – Kickstart