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

VARCHAR2とCHARを比較する最良の方法

    table1.valueとして 列にインデックスが付けられている場合、インデックスが使用されなくなるため、比較のために列を操作する必要はありません。したがって、検索している値を変更する必要があります:

    SELECT table1.ID FROM table1 WHERE table1.VALUE = RPAD('123-45', 12)
    

    ただし、Oracleは、表示されたクエリを使用して暗黙的にこれを実行し、引き続きインデックスを使用します。テーブルを結合する場合も同じですが、結合中にパディングするかトリムするかは、どのテーブルがドライバーであるかによって異なります。

    SELECT table1.ID, table2.ID
    FROM table1
    JOIN table2 ON table2.value = RTRIM(table1.value)
    WHERE table1.VALUE = RPAD('123-45', 12)
    

    または:

    SELECT table1.ID
    FROM table2
    JOIN table1 ON table1.value = RPAD(table2.value, 12)
    



    1. 共有ホスティングでの安全なMySQLパスワード

    2. Hibernate:MySQLDialectとMySQLInnoDBDialectの違いは何ですか?

    3. PostgreSQLのPL/pgSQLとSQLは、SQL標準のみではなく、SQL / PSM標準と同じレベルですか?

    4. R12.2環境のクローンを作成する方法