PostgreSQL 형변환 CAST 사용 방법

PostgreSQL에서 데이터 형변환을 하는 방법을 알아보겠습니다.

데이터 형변환이란 문자열 타입을 숫자 타입으로 변환하거나 반대로 숫자 타입을 문자열 타입으로 변환하는 것을 의미합니다.

형변환을 하기해서 CAST를 사용하도록 하겠습니다.

 

CAST

CAST 함수의 기본적인 작성 방법을 먼저 보겠습니다.

CAST(A AS B)

 

A : 값 또는 테이블의 컬럼 지정

B : 변환하고 싶은 타입을 지정

 

타입으로 지정 가능한 데이터 타입을 보겠습니다.

종류테이터 타입
문자형character(자릿수) , character varying , text
숫자형integer , numeric
날짜형date , timestamp
논리형boolean

 

문자에서 숫자로 변환

문자열을 숫자로 변환하는 방법을 샘플을 보면서 확인해보겠습니다.

샘플을 보면서 사용 방법을 확인해보겠습니다.

-- '0123'를 INTEGER로 변환
SELECT CAST('0123' AS INTEGER); 

 int4
------
  123
(1 row)


-- '0123.45'를 NUMERIC로 변환
SELECT CAST('0123.45' AS NUMERIC); 
---------
  123.45
(1 row)


-- 소수점을 지정해서 변환
-- 소수점 2자리까지 변환
SELECT CAST('1234567.345' AS NUMERIC(10,2) ); 

  NUMERIC
------------
 1234567.35
(1 row)

-- 소수점 3자리까지 변환
SELECT CAST('1234567.345' AS NUMERIC(10,3) );

   NUMERIC
-------------
 1234567.345
(1 row)

-- 소수점 5자리까지 변환
SELECT CAST('1234567.345' AS NUMERIC(12,5) ); 

    NUMERIC
---------------
 1234567.34500
(1 row)


-- 마이너스 값 변환
SELECT CAST('-123456.789' AS NUMERIC); 

   NUMERIC
-------------
 -123456.789
(1 row)

-- 소수점 포함 마이너스 값 변환
SELECT CAST('-123456.789' AS NUMERIC(8,2) );

  NUMERIC
------------
 -123456.79
(1 row)

 

CAST에 INTEGER와 NUMERIC 데이터 타입을 지정해 문자열에서 숫자로 형변환을 했습니다.

형변환을 한 값들을 확인해보면 문자열이지만 값은 숫자입니다.

만약 숫자 형태가 아닌 문자열을 숫자로 형변환을 하려고 하면 에러가 발생합니다.

SELECT CAST('abc' AS INTEGER);
ERROR:  invalid input syntax for type integer: "abc"
LINE 1: SELECT CAST('abc' AS INTEGER);

 

문자열에서 숫자로 형변환을 할때에는 값에 문자값이 없는지 확인을 하는것이 좋습니다.

 

숫자에서 문자로 변환

이번에는 숫자형 타입에서 문자열 타입으로 형변환을 하는 방법을 보겠습니다.

-- 12345를 CHARACTER VARYING로 변환
SELECT CAST(12345 AS CHARACTER VARYING);

 varchar
---------
 12345
(1 row)


-- 12345를 CHARACTER VARYING(3)로 변환
SELECT CAST(12345 AS CHARACTER VARYING(3));

 varchar
---------
 123
(1 row)


-- 45678를 TEXT로 변환
SELECT CAST(45678 AS TEXT);

 text
-------
 45678
(1 row)

 

숫자형태의 값이 문자열 타입으로 변환되었습니다.

 

댓글