忍者ブログ
ブログツール、2007/11/06作成
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

MVCモデルでORマッピングをするとき、
値の型が可変であるときの処理ってちょっと難しい。

まあ、基本的には文字列で保持しておいて、
インスタンス化するときにキャストしてやれば問題ない。

特にRubyみたいな動的型付け言語の場合。

が、DBの中に文字列で格納していると問題が起こることがある。
そう、ソートするときだ。

文字列の時は基本的に問題ない。

しかし、整数や小数の時が問題。

で、整数の時は別に問題ない。

CAST(column ,TYPE)でキャストしてやれる。

問題なのは小数の時だ。

MySQLのCASTの場合、
数字以外の文字列が登場するまでの数字を整数に直しているみたいだ。
たとえば、
'1.0002'->1
'43.3'->43
'59.8'->59
という感じだ。

となれば、ソートしようとしたとしても、小数点以下の値は評価されないという困ったことになる。

頭を悩ませて調べてみた。
すると、リファレンスに以下の一文が。

>算術演算でストリングを使用している場合、これは浮動小数点数に変換されます。


試しにやってみた。

SELECT (string_value + 0.01 -0.01) FROM table;

'1.0002'->1.0002
'43.3'->43.3
'59.8'->59.8

まんまとDECIMALで帰ってきましたよ。

ビバ暗黙キャスト。

PR
ついめ~じ
ブログ内検索
フリーエリア
サニーカメラ
Powered by Ninja Blog    template by Temp* factory    icon by MiniaureType

忍者ブログ [PR]