自分の備忘録です。
間違えがあったらご容赦ください。
その場合はご指摘いただければ大変助かります。
文字列型のフィールドの中に無理やり数字を入れているケース、というか数字だと自分に言い聞かせているケース。
例えば、MD35というカラムとして、入っている物が「001340」など。
ファイルの製作者はこれで「千三百四十」という数字を表現しているという土台無茶な話。
これをSQLで指定するともちろんそのまま「001340」となります。
完璧に文字ですね。
しかもここに入っているものは重量らしく、二桁繰り上がって本当の表示は「13.4」らしい。
まず、数字に直すのはINTEGERを使います。
でもこれは整数なので、INTEGER(MD35)とすると「1340」になります。
さらにINTEGER(MD35/100)とすると「13」になります。
小数が消し飛び電子のチリとなります。
欲しいのは少数。
小数を出すにはDECIMALを使うそうです。
DECIMAL(MD35/100,5,1)とすると整数5桁+小数1桁になる。
でもこれ、結果は「13.0」になります。
たぶん文字のフィールドを割っているからだと思います。
これで悩みました。
結論を言えば
DECIMAL(DECIMAL(MD35)/100,5,1)
としたら出来ました。
DECIMALで小数がある数値に直したものを100で割って、さらにDECIMALで小数区切りにするみたい。
以上です。
追記
後で見つけたのですが、REALという関数でも解決できるようです。
REAL(MD35) / 100
ただ小数点の表示がうまくいかなかったので、私はこれは使いませんでした。
コメント