合并2个表与前五个字符共同

时间:2012-09-10 14:00:29

标签: sql oracle11g

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

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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个字符以上?

答案 2 :(得分: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;