2 つの異なるテーブルに同じ名前の 2 つの列があるが、データ型が異なる場合。
この 2 つのテーブルに参加できますか?
はい、できます。
あなたが持っている場合:
TABLE_A
A_ID NUMBER
DEPT NUMBER
と
TABLE_B
B_ID NUMBER
DEPT VARCHAR2
TABLE_B.DEPT の値が数値であるが、文字列として格納されていることが確実な場合は、次のことができます。
SELECT *
FROM TABLE_A
JOIN TABLE_B
ON (TABLE_A.DEPT = TO_NUMBER(TABLE_B.DEPT));
あるいは
SELECT *
FROM TABLE_A
JOIN TABLE_B
ON (TO_CHAR(TABLE_A.DEPT) = TABLE_B.DEPT);
テーブルの列の 1 つで関数を使用すると、その列に含まれていた可能性のある Idex の使用が無効になります。この場合、結合が非常に重要で、テーブルが大きい場合は、関数ベースのインデックスを検討することをお勧めします。 .
FWIW、列名も同じである必要はありません。名前は無関係です。重要なのはデータであり、一致させる必要がある列と一致させることができる形式に操作できるかどうかです。
それが役に立てば幸い...