본문 바로가기
다른 DBMS/PostgresDB

형 변환과 CREATE CAST

by 취미툰 2024. 10. 25.
반응형

postgresql은 형변환을 직접 추가하고 제거하고 할 수 있네요.

 

형변환도 3가지가 있습니다.

explicit,assignment,implicit가 있습니다.

explicit는 명시적, assignment는 문맥상 대입 연산이 일어나는 경우에 묵시적으로 호출되는 형 변환자를 만듬. implicit는 무조건 묵시적입니다.

 

해당 DB가 가지고 있는 implicit cast의 목록을 확인하고 싶으면 아래의 쿼리를 활용합니다.

 

select
castsource::regtype as source_type,
casttarget::regtype as target_type,
castcontext
from pg_cast
where castcontext = 'i'
order by 1

 

 

cast를 생성하고 싶다면 create cast로 생성하면 됩니다.

생성구문은 3가지 방법이 있습니다.

예제

CREATE CAST (기존자료형 AS 대상자료형)
    WITH FUNCTION 함수이름 [ (인자자료형 [, ...]) ]
    [ AS ASSIGNMENT | AS IMPLICIT ]

CREATE CAST (기존자료형 AS 대상자료형)
    WITHOUT FUNCTION
    [ AS ASSIGNMENT | AS IMPLICIT ]

CREATE CAST (기존자료형 AS 대상자료형)
    WITH INOUT
    [ AS ASSIGNMENT | AS IMPLICIT ]

WITH FUNCTION

형변환 작업용 함수가 있는경우 선언후 사용

WITHOUT FUNCTION

형변환 작업용 함수가 필요 없는 경우임을 지정

WITH INOUT

해당 형변환자를 입력출력용 형변환자로 지정.

 

 

저는 실제로 묵시적으로 선언이 필요한 형변환을 생성해야 했기 때문에 아래와 같이 생성하였습니다.

 

create cast (numeric as text) with INOUT as implicit;

 

 

삭제는 아래와 같이 삭제합니다.

drop cast(numeric as text);

 

출처 : https://postgresql.kr/docs/13/sql-createcast.html

 

CREATE CAST

CREATE CAST CREATE CAST — 새 형변환자 정의 요약 CREATE CAST (기존자료형 AS 대상자료형) WITH FUNCTION 함수이름 [ (인자자료형 [, ...]) ] [ AS ASSIGNMENT | AS IMPLICIT ] CREATE CAST (기존자료형 AS 대상자료형) WITHOUT FU

postgresql.kr

 

반응형

댓글