どんな言語にも暗黙の型変換はあるのだが、
最近とあるプロジェクトの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”)
コメント