sql >> データベース >  >> RDS >> Oracle

フィールドの部分文字列値に基づいて2つのテーブルを結合するにはどうすればよいですか?

    これを行うには非常に多くの方法があります。特定の方法に取り組む前に、さまざまな方法の説明計画を確認することをお勧めします。たとえば、EMPLOYEEに関数ベースのインデックスがある場合 SUBSTR(id, 2, LENGTH(id) - 1)など 次に、それをクエリで使用する必要があります:

    SELECT e.name, i.name
      FROM employee e INNER JOIN instructor i
        ON SUBSTR(e.id, 2, LENGTH(e.id) - 1) = SUBSTR(i.id, 2, LENGTH(i.id) - 1);
    

    もう1つの質問は、idの値が EMPLOYEEの列は常に同じ長さです および INSTRUCTOR 。長さが異なる場合はどうなりますか?たぶん、ある人が別の人よりも多くのパディングを持っています。また、それらは常にになりますか 主要なuは別として ?もしそうなら、安全なTO_NUMBER()を試す価値があるかもしれません 変換:

    SELECT e.name, i.name
      FROM employee e INNER JOIN instructor i
        ON TO_NUMBER(REGEXP_SUBSTR(e.id, '\d+$')) = TO_NUMBER(REGEXP_SUBSTR(i.id, '\d+$'));
    

    ただし、もう1つ考慮したいことがありますが、これは先頭のuに理由があります。 EMPLOYEEid 桁?他の主人公はいますか?主要なu 何かを表しますか(最初の正規形に違反しますが、それは起こります)?



    1. Entity Framework で GetDate() を管理する方法

    2. OracleAQデキュー順序

    3. MySQLとPDO:PDO ::lastInsertIdは理論的に失敗する可能性がありますか?

    4. IF構文エラー