我正在尝试联接具有公用列“ NAME”的2个表,但是数据的排序如下:
表A
NAME
B C Corporations
Tefal Inc.
West, Tom
Anne Zagabi
(C) NamyangSoy
表B
NAME
BC Corporations
Tefal Inc
Tom West
AnneZagabi
( C ) NamyangSoy
以上是我遇到的情况。这确实很丑陋,但是让我认为使用sql可能的一件事是,两个表中至少一个单词的拼写是相同的。
但是,我尝试了soundex,但是代码实际上不是英语,因此它不起作用(上面只是我用英语编写的一个示例)。我已经试过了差分函数,但是它也不起作用(所有值都为4,我想是因为它不是英语的?我不确定)。
我试着逐个字母地加入,但也没有用。我希望是否还有其他方法可以完成。.我正在使用sqlcanvas,数据库是sybase。两个表都有近30列,每个都有〜12,000行
这样的事情对您有用吗?
从[表A]中选择*一个连接[表B] b在REPLACE(a.Name,'',))= REPLACE(b.Name,'','')
使用“替换”功能删除所有空格并比较结果。
例如,运行此
select
CASE
WHEN REPLACE('T E S T', ' ', '') = REPLACE('TE ST', ' ', '') THEN 'TRUE' else 'FALSE'
END
使用代码替换所有非字母字符:
CREATE FUNCTION [dbo].[fncRemoveNonAlphanumericChars](@Temp VarChar(1000))
RETURNS VarChar(1000)
AS
BEGIN
WHILE PatIndex('%[^A-Za-z0-9]%', @Temp) > 0
SET @Temp = Stuff(@Temp, PatIndex('%[^A-Za-z0-9]%', @Temp), 1, '')
RETURN @TEmp
END
例子:
SELECT dbo.fncRemoveNonAlphanumericChars('abc...DEF,,,GHI(((123)))456jklmn')
结果:
abcDEFGHI123456jklmn
(来自此处:http : //jayhollingum.blogspot.com/2011/01/sql-server-remove-non-alphanumeric.html)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句