MySQL 文字列を数値に変換して集合関数(MAX 関数など)を使う方法について

CHAR 型の列に対して集合関数(MAX など)を使おうとすると、比較が文字列として扱われてしまい、意図したとおりの結果にならない場合があります。

例えば次の SQL の場合、CHAR(3) で定義された列に 9 と 100 が入っていると MAX は 9 を返してしまうんですね。

[code lang=’sql’] select max(Column) from Table;
[/code]

手っ取り早い解決方法としては、列を数値化してあげれば良いです。
例えば、次の様に数値計算を行う方法。

[code lang=’sql’] select max(Column + 0) from Table;
[/code]

他にも、CAST 関数を使って書く方法もありますね。

[code lang=’sql’] select max(cast(Column as signed)) from Table;
[/code]

え?Webサイトのバックアップ、してないの!?

いざという時には復旧までしてくれる
『ワードプレス外部バックアップサービス』

■3つの特長
・自分でやらなくて良い
・いざという時の復旧付き
・外部サーバーにバックアップ

コメントを残す