プロプログラマ

プログラマーを職業としてます。 Flex,Air,C#,Oracle,HTML+JSの言語ノウハウを中心に情報発信していきます

[Oracle] VARCHAR2型カラムのMAXを取得するときの注意

VARCHAR2カラムの値に対してMAX関数を使うと、思った結果にならない場合があります。

たとえば、カラムに”9″と”10″が登録されている場合、MAX関数の戻り値は”9″になってしまいます。
“11”や”89″などが登録されていてもMAX関数はやはり”9″を返してしまいます。

文字列型の場合は、文字コードとしての判定を行うためです。

回避方法としては
(1) “009”、”010″のように桁を合わせて登録する
(2) MAX(TO_NUMBER(***))のように数値にしてからMAXを取る

(2)の場合、カラム内に数値以外の値が入っているとエラーになりますので注意ください。

MAX以外の他の関数でも同じような扱いになりますので気を付けましょう。
できれば最初からNUMBER型にしておいたほうが良いですね。

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください