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