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