데이터베이스/Postgresql

[Postgresql] quote_ident / quote_literal 함수 사용방법 : Postgresql에서 쌍따옴표/홑따옴표 사용하는 방법

모찌바라기 2022. 11. 18. 21:35
728x90
반응형

 

 

 

Postgresql를 사용하다보면 테이블명이나 컬럼명, Value값에 쌍따옴표나 홑따옴표를 넣어줘야 할 일이 있다

그럴때 사용할 수 있는 함수가 quote_ident와 quote_literal이다. 각 사용법에 대해 알아보자.

 

 

quote_ident함수를 이용한 쌍따옴표 표기방법

 

사용방법

quote_ident(value);

'CREATE TABLE my_schema.' || quote_ident(my_table);

 

결과

"value"

CREATE TABLE my_schema."my_table"

 

 

이렇게 쌍따옴표로 감싸준다.. 그럼 굳이 이 함수를 쓰는 이유가 있을까? 있다. 하드코딩이라면 문제 없지만

프로시저/함수 생성시에 테이블명이나 컬럼명을 파라메터로 받아온다고 하면, 또 대문자가 포함되어 있다고 하면

반드시 쌍따옴표로 묶어줘야 하는데 해당 함수를 쓰지 않으면 아래와 같이 작성해야 한다.

 

 

'CREATE TABLE my_schema.' || '"' || my_table || '"';

 

이렇게 보면 ||도 많이 들어가고 쌍따옴표를 홑따옴표로 묶어주는 등, 코드가 조금 길어진다. 하지만

quote_ident함수를 사용하는 편이 조금 더 깔끔한 쿼리를 짤 수 있다.

 

 

 

quote_literal함수를 이용한 홑따옴표 표기방법

 

 

사용법

quote_literal(value);

'select * from my_schema.my_table where value = ' || quote_literal(value);

 

결과

'value'

select * from my_schema.my_table where value = 'value';

 

quote_literal함수를 이용하면 이렇게 홑따옴표로 묶어줄 수 있다. 만약 quote_literal함수를

이용하지 않는다고 하면 아래와 같이 작성할 수 있다.

 

 

'select * from my_schema.my_table where value =' || ' '' ' || value || ' '' '|| ;

 

보면 알겠지만 더 코드가 깔끔해진다... 필요하다면 해당 함수를 쓰도록 하자.

 

 

 

 

728x90
반응형