-
[PostgreSQL] 타입 변환 (type cast)DB/PostgreSQL 2017. 2. 22. 15:02
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에서 확인할 수 있습니다.