Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql连接两个表(如果它们具有相似的名称/值)_Sql_Sql Server_Join_Rdbms_Soundex - Fatal编程技术网

sql连接两个表(如果它们具有相似的名称/值)

sql连接两个表(如果它们具有相似的名称/值),sql,sql-server,join,rdbms,soundex,Sql,Sql Server,Join,Rdbms,Soundex,我试图连接两个具有公共列“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可能是可行的,那就是两个表中至少有一个单词的拼写是相同的 然而,我试过soun

我试图连接两个具有公共列“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列和大约12000行,这样的东西对您有用吗

从[表A]A中选择*连接[表B]B 替换时(a.名称“”,“”)=替换(b.名称“”,“”)

使用“替换”功能删除所有空格并比较结果

例如,运行这个

 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


(这是从这里开始的:)

你忘了标记正确的RDBMS,我猜它的
sql server
是因为
soundex
?如果你仔细看,它会变得更难看-这样的表会包含拼写错误、重复、几乎重复和类似的内容。我曾经做过类似的工作(合并不同的客户数据库)-在您删除空格并进行精确匹配,然后可能与soundex进行匹配并删除其中的一些内容后,您必须使用excel之类的工具手动连接剩余的(约20%)记录。我希望这是一次性任务:)你希望这些表@user2810030有什么输出?@Arvo在“手动”清理之后,我剩下的8607大约是60%,但我还没有验证结果,8607太多了,手动操作,尽管这是一次性任务:(@VijaykumarHadalgi我的输出看起来像“name(char)、loanID(num)、loanAmt(num),loantype(char),…”这4列是我需要的关键列,其他列是多余的,但需要记录。这就是你的意思吗?我想这两个表中的name列加上like就可以了,我会先在两个表中细化name列,然后用like命令连接起来。我出去吃午饭了,但我一回来就会试试。谢谢!!