3

我想合并两个表,条件是即使单词不完全相同,至少前 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其他类似的记录。

4

3 回答 3

0

这个查询怎么样:

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;
于 2012-09-10T14:20:15.250 回答
0
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;
于 2012-09-10T14:13:12.517 回答
0

如果我理解正确,您可以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个字符及以上?

于 2012-09-10T14:14:56.447 回答