0

2 つの異なるテーブルに同じ名前の 2 つの列があるが、データ型が異なる場合。

この 2 つのテーブルに参加できますか?

4

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、列名も同じである必要はありません。名前は無関係です。重要なのはデータであり、一致させる必要がある列と一致させることができる形式に操作できるかどうかです。

それが役に立てば幸い...

于 2012-08-02T13:00:45.877 に答える