MySQL 明示的に型変換 文字列を数値に変換

MySQLは型に対する考え方がルーズで文字型のフィールドであっても中身が数字であればそのまま計算などに使用できる。
その為か、ネットで調べても型に対する記述がやたらと少ないような気がする。
みんなさらっと流しているようだ。
select max(文字型フィールド)from xxxxx

と実行すると文字列としての最大が出てしまうのだ。
※文字型フィールドには1~500の数字が入っていたとする。
気持ち的には500が出て欲しいところだが、
実際は、99が出てくるのだ。
型を意識していないとあっさりバグってしまいそうだ。
ではどうするかというと型を明示的に指定するしかない。
それには、CAST というものが用意されていた。
select max(cast(文字型フィールド as SIGNED ))from xxxxx

赤い部分で中身を整数として扱っている。
これでMAXは、500が出てくるようになる。
指定できる型には、
BINARY
CHAR
DATE
DATETIME
SIGNED (INTEGER)
TIME
UNSIGNED (INTEGER)
などがあるらしい。
http://dev.mysql.com/doc/refman/4.1/ja/cast-functions.html

現場で使えるMySQL

現場で使えるMySQL

価格:2,730円(税込、送料別)

PHP+MySQL

PHP+MySQL

価格:2,520円(税込、送料別)

コメント

  1. 迷子 より:

    この記事、助かりました。ありがとうございます。

タイトルとURLをコピーしました