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

2021年8月14日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'

 

 

動画で確認する

説明分だけだとイメージがわからない場合は動画をご覧ください。

(無音でもわかるように字幕をいれています)

 

 

関連記事

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

数値の書式設定をする

文字を日付に変換する