Programming/Oracle

Oracle 홑따옴표( ' )가 포함된 문자열 처리 방법

Jan92 2025. 4. 19. 00:00
반응형

Oracle 홑따옴표( ' )가 포함된 문자열 처리 방법

oracle 문자열 내 홑따옴표가 있을 때

 

 

오라클 홑따옴표(') 용도와 문자열 내 홑따옴표가 포함된 경우

SELECT * FROM single_quotation_test WHERE test_value = '홑따옴표 테스트';

Oracle SQL에서 홑따옴표( ' )는 기본적으로 문자열을 감싸는 데 사용되는데요.

 

 

-- ORA-00917: missing comma
INSERT INTO single_quotation_test (test_value)
VALUES ('문자열 안에 ' 홑따옴표가 포함된 경우');

-- ORA-00933: SQL command not properly ended
SELECT * FROM single_quotation_test WHERE test_value = '문자열 '안에 홑따옴표';

만약 예시와 같이 문자열 안에 홑따옴표( ' )가 포함된 경우에는 'ORA-00917: missing comma' 또는 'ORA-00933: SQL command not properly ended' 등의 오류가 발생할 수 있습니다.

 

그렇다면 오라클에서 문자열 안에 홑따옴표( ' )를 사용하기 위해서는 어떻게 해야 할까요?

 

 

 

 

방법 1. 홑따옴표( ' )를 두 번 연속 사용하여 이스케이프(escape) 처리

홑따옴표를 '' 두 번 사용하여 escape 처리

-- '' 이스케이프 활용 INSERT
INSERT INTO single_quotation_test (test_value)
VALUES ('문자열 안에 '' 홑따옴표가 포함된 경우');

-- '' 이스케이프 활용 SELECT
SELECT * FROM single_quotation_test
WHERE test_value = '문자열 안에 '' 홑따옴표가 포함된 경우';

첫 번째 방법은 홑따옴표( ' )를 두 번 연속 사용하여 이스케이프 하는 방법입니다.

INSERT, SELECT 예시처럼 홑따옴표를 두 번 연속( '' ) 사용하면 문자열 안에서 ( ' )를 처리할 수 있습니다.

 

* cs 측면에서 escape는 특정 문자가 가진 원래의 의미를 잠시 무시하고 다른 목적으로 사용하게 하는 것으로 볼 수 있습니다.

 

 

 

 

방법 2. q 연산자를 활용하여 처리

q 연산자를 사용하여 처리

-- q 연산자 사용 INSERT
INSERT INTO single_quotation_test (test_value)
VALUES (q'[문자열 안에 ' 홑따옴표가 포함된 경우]');

-- q 연산자 사용 SELECT
SELECT * FROM single_quotation_test
WHERE test_value = q'[문자열 안에 ' 홑따옴표가 포함된 경우]';

두 번째 방법은 인용(q) 연산자를 사용하는 방법입니다.

인용(q) 연산자는 q'[문자열]' 형태의 기본 문법으로 사용되며, 이 방식의 원리는 인용 연산자를 통해 [ ] 대괄호가 문자열 구분자로 사용되게 하는 것입니다.

 

꼭 [ ] 대괄호가 아니더라도 { }, ( ), < > 등의 구분자(delimiter)를 사용할 수 있으며, 이때 열리는 구분자와 닫히는 구분자는 짝을 맞추어서 사용해야 한다는 특징이 있습니다.

q 연산자를 활용한 방법은 문자열 안에 홑따옴표가 많을 때 특히 유용한 방법입니다.

 

* q 연산자의 경우 Oracle 10g 버전부터 지원되기 때문에 이전 버전에서는 사용할 수 없습니다.

 

 

 

 

< 참고 자료 >

https://forums.oracle.com/ords/apexds/post/q-operator-understanding-6336

반응형