PostgreSQL에서 타입을 변경하는 함수는 아래와 같이 지원됩니다. 

CAST()

먼저 SQL 표준인 CAST()입니다.

CAST(value AS type)
 
-- 예시
CAST(1234 AS TEXT)

::

다른 한가지는 PostgreSQL에서 지원하는 :: 입니다.

value::type
 
-- 예시
1234::TEXT

PostgreSQL에서 지원하는 ::이 사용되는 특별한 경우는 '{apple,cherry apple, avocado}'::text[];를 문자열 리터럴인 {apple,cherry apple, avocado}로 변환하고 PostgreSQL이 text의 어레이로 해석하도록 합니다.

함수형 형변환

마지막으로 함수형처럼 사용할 수 있는 형식입니다.

type(value)
 
-- 예시
TEXT(1234)


이 방식은 항상 작용하는 것이 아니라 유효한 유형에만 작동합니다. 예를들어 double 표현은 사용할 수 없지만 float8은 사용이 가능합니다.

SELECT DOUBLE(1234) -- 타입 변환 에러
SELECT FLOAT8(1234) -- 성공


또한 interval, time, timestamp는 아래와 같이 큰 따옴표(")로 묶여버리기 때문에 사용을 할 수 없습니다. 

SELECT TIMESTAMP('20170101') -- ERROR:  syntax error at or near "'20170101'" 에러
SELECT '20170101'::TIMESTAMP -- 성공


그러므로 함수와 유사한 타입 변환 구문은 사용에 제약이 발생하여 피하고 CAST() 또는 :: 방식을 사용하는 것을 권합니다.


자세한 내용은 https://www.postgresql.org/docs/9.4/static/sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS-GENERIC에서 확인할 수 있습니다.

  1. 코딩하는흑구 2019.03.05 13:23 신고

    잘보고갑니다~

+ Random Posts