【PostgreSQL】文字から数値、数値から文字へ変換する

2021年4月24日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

-- 'abc'をintegerへ変換する
select cast('abc' as integer);      -- エラーが発生

--上の3つの例は、次のように書くこともできます
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'

 

 

 

to_numberではない理由

文字から数値への変換の場合、to_number()、to_char()関数が候補として出てくると思いますが、

to_number()は書式設定が細かくできる反面、その書式設定がかなりわかりづらいです。

cast()の方が一見してわかるため、こちらで説明しています。

 

 

 

関連記事

数値の書式設定をする(to_char)

前0埋め、後ろ0埋め(lpad、rpad)

文字を日付に変換する

日時、時刻の書式設定をする