假设我有两个表,其中列 Col1、Col2 和 Col3 均为 VARCHAR2,CLOB和 NUMBER 类型分别。
我怎样才能得到这些表的差异? (即存在于Table B,但不在Table A)
Table A:
╔═══════╦═════════════════╦══════╗
║ Col1 ║ Col2 ║ Col3 ║
╠═══════╬═════════════════╬══════╣
║ P1111 ║ some_long_text1 ║ 1234 ║
║ P1111 ║ some_long_text1 ║ 1233 ║
║ P1111 ║ some_long_text2 ║ 1233 ║
╚═══════╩═════════════════╩══════╝
Table B:
╔═══════╦═════════════════╦══════╗
║ Col1 ║ Col2 ║ Col3 ║
╠═══════╬═════════════════╬══════╣
║ P1111 ║ some_long_text1 ║ 1234 ║
║ P1111 ║ some_long_text1 ║ 1235 ║
║ P1112 ║ some_long_text2 ║ 1233 ║
╚═══════╩═════════════════╩══════╝
Expected results:
╔═══════╦═════════════════╦══════╗
║ Col1 ║ Col2 ║ Col3 ║
╠═══════╬═════════════════╬══════╣
║ P1111 ║ some_long_text1 ║ 1235 ║
║ P1112 ║ some_long_text2 ║ 1233 ║
╚═══════╩═════════════════╩══════╝
比较LOB
你可以使用的类型DBMS_LOB.COMPARE
功能。
SELECT table_b.*
FROM table_b
LEFT JOIN table_a
ON table_b.col1 = table_a.col1
AND DBMS_LOB.COMPARE(table_b.col2, table_a.col2) = 0
AND table_b.col3 = table_a.col3
WHERE table_a.col1 IS NULL;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)