【PostgreSQL】文字から数値、数値から文字へ変換する
構文
型を変換するにはcast(キャスト)を使用します。
-- 型を変換する
cast( A as B ) -- Aを型Bに変換する
A: 型変換をする文字・数字・日付など
B: 変換したい型を指定します。
※ castではなく「'123'::integer」、「123::text」のように「::型」で表現する方法もありますが、
こちらにあるとおり同じ意味です。
B(変換したい型)に設定する代表的な型
型 | 代表例 |
文字型 | character(桁数) , character varying , text |
数値型 | integer , numeric |
日付型 | date , timestamp |
論理型 | boolean |
文字から数値へ変換する例
文字から数値へ変換する例です。SELECT文はそのまま実行できます。
-- '0123'をintegerへ変換する
select cast('0123' as integer); -- 123
-- '0123.45'をnumericへ変換する
select cast('0123.45' as numeric); -- 123.45
-- 小数点第何位までで変換
-- numericの左の数値は全体の桁数、右は小数点の桁数
SELECT cast('1234567.345' as numeric(10,2) ); -- 小数点第2位まで:1234567.35
SELECT cast('1234567.345' as numeric(10,3) ); -- 小数点第3位まで:1234567.345
SELECT cast('1234567.345' as numeric(12,5) ); -- 小数点第5位まで:1234567.34500
-- マイナス値
SELECT cast('-123456.789' as numeric); -- -123456.789
SELECT cast('-123456.789' as numeric(8,2) ); -- -123456.79
-- 'abc'をintegerへ変換する
select cast('abc' as integer); -- エラーが発生
--上の例は、次のようにも書くこともできます(同じ意味です)
select '0123'::integer; -- 123
select '0123.45'::numeric; -- 123.45
select 'abc'::integer; -- エラー
数値から文字へ変換する
数値から文字へ変換する例です。SELECT文はそのまま実行できます。
-- 12345をcharacter varyingへ変換する
select cast(12345 as character varying); -- '12345'
-- 12345をcharacter varying(3)へ変換する
select cast(12345 as character varying(3)); -- '123'
-- 45678をtextへ変換する
select cast(45678 as text); -- '45678'