暗黙の型変換には気をつけろ

どんな言語にも暗黙の型変換はあるのだが、
最近とあるプロジェクトのSQLコードのレビューをする際に遭遇したこと。
暗黙の型変換には気をつけろ! という話題。
以下、Oracleでのサンプル。

SQL> create table t (id char(10));
表が作成されました。

SQL> insert into t (id) values ('90');
1行が作成されました。

SQL> insert into t (id) values ('100');
1行が作成されました。

SQL> select max(id) from t;
MAX(ID)
------------------------------
90

SQL> select max(to_number(id)) from t;
MAX(TO_NUMBER(ID))
------------------
100
  • 文字列の大小関係と数値の大小関係は当然違うよ
  • ゼロ埋めしてあれば比較できたけどね (“0000000090” と “0000000100”)

コメントを残す

メールアドレスが公開されることはありません。