【PostgreSQL】数値を文字に変換する(to_char)

PostgreSQL構文

構文

数値を文字に変換し書式を設定するには、to_char(数値 ,  書式)を使用します。

使用例はこの下を参照して下さい。

--数値を文字に変換する
to_char( 数値 , 書式 )

 

 

 

使用例

to_charを使うと先頭に謎の空白が入るので、「FM」をつけ、空白がつかないようにしています。

0と9の違いは、0は必ずその桁数まで表示され、9は数値がある桁数まで表示します。

書式は公式に例がありますが実務では使用しないものが多く、次の例で事足ります。

-- カンマ区切り+少数点(3桁まで表示)
select * From to_char(12345.67, 'FM999,999.999');     -- 12,345.67

-- カンマ区切り+少数点(3桁で表示)
select * From to_char(12345.67, 'FM999,999.000');     -- 12,345.670

-- マイナス値+カンマ区切り+少数点(3桁まで表示)
select * From to_char(-12345.67, 'FM999,999.999');     -- -12,345.67

-- マイナス値+カンマ区切り+少数点(3桁で表示)
select * From to_char(-12345.67, 'FM999,999.000');     -- -12,345.670

 

 

返り値の最後が「.」になってしまう時の対処方法

引数の値が整数なのか小数なのかはっきりしない場合、

例1のような書式設定をすると、返り値の最後が「.」で終わってしまうケースがあります。

その場合、例2のようにcase文を使って場合分けをすると解決できます。

 -- 例1.返り値の最後が「.」になってしまうケース
select to_char(12345, 'FM999,999.999');   -- "12,345." 

-- 例2.帰り値の最後が「.」になってしまうのを対処したパターン(CASE文を使用) 
select case 
when right(to_char(12345, 'FM999,999.9'),1) = '.' then 
to_char(12345, 'FM999,999')              -- 最後が「.」なら整数として書式設定する
else to_char(12345, 'FM999,999.9') end;  -- そうでなければ小数用の書式設定をする
-- "12,345"

 

 

to_charを使った日付書式

to_charは日付の書式設定にも使用することができます。