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
価格:2,730円(税込、送料別)
PHP+MySQL
価格:2,520円(税込、送料別)
コメント
この記事、助かりました。ありがとうございます。