読者です 読者をやめる 読者になる 読者になる

空気を読みすぎるOracle

Oracleのvarcharカラムに0埋めの数字文字列しか設定されていない、と判っている場合
こんな感じで比較文が書けます。


select count(*) from dual
where '000002' = 2


すげぇ、Oracle空気読みすぎ。
' 000002 '
みたいに、前後に半角SPがあっても大丈夫。
ただ、当然のことですが比較カラムに格納されている文字列が
数字文字列でない場合、SQLエラーになります。


きっと暗黙の型変換で全部のカラムにTO_NUMBERしてるでしょうから、
パフォーマンスが出ないと困るところでは使わないほうがいいと思います。
SQL見ただけじゃ型がすぐに分からないからバグの素になりそうだし、やっぱり止めたほうがいいなー。