3

単語が完全に同じでなくても、少なくとも最初の8文字は同じである必要がありますが、そうすることができないという条件で2つのテーブルをマージしたいと思います。私のテーブルには、名、姓、ミドルネームの順に顧客の名前が含まれています。

2番目の表では、それらの多くにミドルネームがないため、ほとんどのレコードをマージできません。これが私が取り組んでいるコードです:

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

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 に答える