ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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에서 확인할 수 있습니다.

    댓글