【PostgreSQL】数値を文字に変換する(to_char)
構文
数値を文字に変換し書式を設定するには、to_char(数値 , 書式)を使用します。
使用例はこの下を参照して下さい。
--数値を文字に変換する
to_char( 数値 , 書式 )
あわせて読みたい
※ 書式の指定が必要ない数値→文字の変換は、castを使う方法がおすすめです
使用例
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は日付の書式設定にも使用することができます。