[Oracle] VARCHAR2型カラムのMAXを取得するときの注意
VARCHAR2カラムの値に対してMAX関数を使うと、思った結果にならない場合があります。
たとえば、カラムに”9″と”10″が登録されている場合、MAX関数の戻り値は”9″になってしまいます。
“11”や”89″などが登録されていてもMAX関数はやはり”9″を返してしまいます。
文字列型の場合は、文字コードとしての判定を行うためです。
回避方法としては
(1) “009”、”010″のように桁を合わせて登録する
(2) MAX(TO_NUMBER(***))のように数値にしてからMAXを取る
(2)の場合、カラム内に数値以外の値が入っているとエラーになりますので注意ください。
MAX以外の他の関数でも同じような扱いになりますので気を付けましょう。
できれば最初からNUMBER型にしておいたほうが良いですね。
== ランキングに参加しています。ぜひクリックお願いします ==
スーパマリオランが配信開始されます [Excel] オートフィル機能で○付き数字を連続コピーするには