我正在尝试连接两个具有公共列“NAME”的表,但数据的排序方式如下:
表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行
答案 0 :(得分:1)
这样的事情对你有用吗?
从[表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)