スポンサーリンク

MySQL 数値を文字列に変換する時に、小数点以下の不要な0を削除する方法

スポンサーリンク

MySQLではDecimal(10,3)など、小数を扱えるサイズの数値型の値を文字列に変換した場合、変換元変数の型のスケール(小数点以下の精度)まで0が付きます。
Decimal(10,3)の場合、値が1.1の場合、「1.100」と3桁まで0が付きます。「1.1」の文字列に変換したい場合は「CAST(数値型の値 AS CHAR) + 0」とする事で可能になります。

サンプル実行

DECLARE HOGE DECIMAL(10,3);
SET HOGE = 1.1;
SELECT HOGE, CAST(HOGE AS CHAR), CAST(HOGE AS CHAR) + 0;
実行結果

注意点

整数部や小数点以下が大きすぎる場合、丸め処理が発生したり、指数表記になるので注意が必要です。
そのような値を扱う必要がある場合は、個別に文字列処理をするファンクションを作成する必要があります。

DECLARE HOGE1 DECIMAL(50,30);
DECLARE HOGE2 DECIMAL(50,30);
DECLARE HOGE3 DECIMAL(50,30);
DECLARE HOGE4 DECIMAL(50,30);
DECLARE HOGE5 DECIMAL(50,30);

SET HOGE1 = 1.999999999999999;
SET HOGE2 = 1.9999999999999999;
SET HOGE3 = 999999999999999.1;
SET HOGE4 = 9999999999999999.1;
SET HOGE5 = 999999999999999.999999999999999;

SELECT CAST(HOGE1 AS CHAR) + 0 HOGE1
      ,CAST(HOGE2 AS CHAR) + 0 HOGE2
      ,CAST(HOGE3 AS CHAR) + 0 HOGE3
      ,CAST(HOGE4 AS CHAR) + 0 HOGE4
      ,CAST(HOGE5 AS CHAR) + 0 HOGE5
;
実行結果

コメント