MySQLやPostgreSQLで型変換してデータ取得する
開発環境:CakePHP2.5.1
text型のカラムに数値データを入れていて、その最大値を取得したい時にそのまま実行すると、
(そもそも型の指定がおかしいというのは置いておいて)
<?php
$params = array(
'fields' => array(
'max(number)',
),
);
$data = $this->Sample->find('first', $params);
?>
このようなコードになり、numberに「90」と「100」のデータが存在すると「100」のデータが返ってきて欲しいところですが、「90」が返ってきてしまいます。
そんな時にどうしたら良いかというとcastなどの型変換を使うことになります。
<?php
$params = array(
'fields' => array(
'max(cast(number as unsigned))',
),
);
$data = $this->Sample->find('first', $params);
?>
このようにそのまま書くだけで型変換が行われ、「100」のデータが返されます。
