misc.log

日常茶飯事とお仕事と

Oracle DBの文字列比較を試してみる

開発案件で、顧客の部署に割り当てられている組織コードを「0010000~001M211」のように文字列含みで範囲指定する必要があり、大小比較が想定通り行われるかちょっと試したい場面が出てきました。

実際にデータを作って……というのが確実ですが、面倒くさいので純粋に文字列動詞の比較だけを試す場合のSQLをメモしておきます。

select
    case when '0010000' < '001M211' then 'T'
    else 'F'
    end
from dual

こんな感じでcase whenを使って判断条件と、それぞれで表示するメッセージや文字をthenの後に指定しておけば、比較式の評価を確認することができます。

なお、Oracle DBでの英数字文字列比較は、1文字ずつASCIIコードの大小で比較していくようです。下記は11gの公式ドキュメントです。参考まで。

docs.oracle.com