반응형
PLSQL에서 단일 따옴표 이스케이프
PLSQL이 다음과 같은 문자열을 생성하기를 원합니다.
COMMENT ON COLUMN TABLE.COLUMN IS 'comment from database';
내 솔루션은 다음과(와)
declare
str_comment varchar2(4000);
begin
for rec in (select table_name, column_name, description from description_table)
loop
str_comment:='COMMENT ON COLUMN '||rec.table_name||'.'||rec.column_name||' IS '''||rec.description||'''; ' ;
dbms_output.put_line(str_comment);
end loop;
end;
출력에 단일 쿼트가 포함되지 않은 경우 정상입니다.rec.description
그렇지 않으면 탈출 편지가 필요합니다.어떻게 구현해야 합니까?
OK 출력 라인(단일 쿼트를 보존하기 위한 이스케이프 문자가 있습니다):
COMMENT ON COLUMN TABLE1.COLUMN1_LV IS 'It''s secret';
단일 따옴표에 대한 이스케이프 문자가 추가되지 않고 컴파일되지 않으므로 NOK 출력 행이 아님:
COMMENT ON COLUMN TABLE1.COLUMN1_LV IS 'It's secret';
제 해결책은 설명에 단일 따옴표가 포함되어 있는지 확인하지 않는 것입니다.생성하기 전에 소스(설명) 열의 단일 따옴표를 두 개의 단일 따옴표로 바꿉니다.COMMENT ON
현악기 그리고 나ROLLBACK
.
더 좋은 해결책은?
저는 이런 정렬 작업을 상당히 많이 합니다(보통 삽입/업데이트 문 생성).
교체 기능을 사용하여 모든 스위치를 돌리면 됩니다.'
안으로''
즉, 다음으로 변경:
str_comment:='COMMENT ON COLUMN '||rec.table_name||'.'||rec.column_name
||' IS '''||REPLACE( rec.description,'''','''''')||'''; ' ;
다음과 같이 견적 연산자를 사용할 수 있습니다.
str_comment:='COMMENT ON COLUMN '||rec.table_name||'.'||rec.column_name||' IS q''[' ||rec.description|| ']'';' ;
http://psoug.org/reference/string_func.html 을 참조하십시오.
사용REPLACE
기능을 선택합니다.
declare
str_comment varchar2(4000);
begin
for rec in (SELECT table_name, column_name, REPLACE(description, '''', '''''')
FROM description_table)
loop
str_comment:='COMMENT ON COLUMN ' || rec.table_name || '.'
||rec.column_name|| ' IS ''' ||rec.description|| '''; ' ;
dbms_output.put_line(str_comment);
end loop;
end;
코드에서 '를 사용해야 하지만 실제 코드로 시도하기 전에
듀얼에 따옴표가 있는 행을 시도합니다.
예:
select '''sumesh''' from dual
언급URL : https://stackoverflow.com/questions/6678478/escaping-single-quote-in-plsql
반응형
'programing' 카테고리의 다른 글
Python의 어레이가 느린 이유는 무엇입니까? (0) | 2023.07.03 |
---|---|
VB는 정말로 대소문자를 구분하지 않습니까? (0) | 2023.07.03 |
vuejs 구성 요소에서 vuex 상태 변경을 확인하는 중 (0) | 2023.07.03 |
Git - 병합하는 동안 파일 무시 (0) | 2023.07.03 |
이 ">>=" 연산자는 C에서 무엇을 의미합니까? (0) | 2023.07.03 |