IT関連

AS400/IBMi DB2 SQL 文字を数値に変換して小数で表示する

自分の備忘録です。

間違えがあったらご容赦ください。

その場合はご指摘いただければ大変助かります。

 

文字列型のフィールドの中に無理やり数字を入れているケース、というか数字だと自分に言い聞かせているケース。

例えば、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

ただ小数点の表示がうまくいかなかったので、私はこれは使いませんでした。

-IT関連
-, ,

© 2021 なんで勉強するの