合并前五个字符相同的两个表



我想合并两个表,条件是即使单词不完全相同,至少前8个字符应该相同,但不能这样做。我的表包含客户的名字,先是名字,后是姓氏,然后是中间名。

在第二个表中,它们中的许多都没有中间名,因此我无法合并大多数记录。这是我正在处理的代码:

SELECT
UPPER(REGEXP_REPLACE(A.NAME, 's*', ''))
FROM
TABLE1 A,
TABLE2 B
WHERE
UPPER(REGEXP_REPLACE(A.NAME, 's*', '')) = UPPER(REGEXP_REPLACE(B.NAME, 's*', ''))
AND
ORDER BY A.NAME;

编辑:(来自评论)

我想将RAVI YADAV KUMARRAVI YADAV K以及其他类似的记录进行匹配。

SELECT A.NAME,B.NAME
FROM TABLE1 A, TABLE2 B
WHERE UPPER(SUBSTR(A.NAME, 1, 8)) = UPPER(SUBSTR(B.NAME, 1, 8))
ORDER BY A.NAME,B.NAME;

如果我理解正确,你可以在上使用LEFT

SELECT A.name,B.name
FROM tableA A INNER JOIN tableB B
       ON LEFT(A.name, 8) = LEFT(B.name, 8)
ORDER BY A.name, B.name

问题是,每列的值是否都有8个字符及以上?

这个查询怎么样:

SELECT A.name,B.name
FROM tableA A, tableB B
   WHERE UPPER(SUBSTR(A.name, 0, 8)) = UPPER(SUBSTR(B.name, 0, 8))
ORDER BY A.name, B.name;

相关内容

最新更新