반응형
[규격 참조]
https://www.w3.org/TR/xml11/#charsets
[2a] RestrictedChar ::= [#x1-#x8] | [#xB-#xC] | [#xE-#x1F] | [#x7F-#x84] | [#x86-#x9F] |
위의 규격을 참조하여 XML에서 사용할 수 없는 문자열을 오라클에서 치환하는 쿼리 입니다.
SELECT regexp_replace('123?</>abABCDㄱㄴㄷㄹ한글!@#$%^&*()-=_+`~ㅁㄴㅁㄴ98ㅛasd9vh.. ', '['|| chr(1) || '-' || chr(8) || chr(11) || '-' || chr(12) || chr(14) || '-' || chr(31) || chr(134) || '-' || chr(159) || chr(127) || chr(128) || chr(129) || chr(130) || chr(131) || chr(132) || ']' , '뷁') FROM dual; |
[결과]
123?</>abABCDㄱㄴㄷㄹ한글!@#$%^&*()-=_+`~ㅁㄴㅁㄴ98ㅛasd9vh..뷁뷁뷁뷁뷁뷁뷁뷁 뷁뷁뷁뷁뷁뷁뷁뷁뷁뷁뷁뷁뷁뷁뷁뷁뷁뷁뷁 뷁 |
* 특수문자가 저장이 안되네요. 쿼리상에 들어간 특수 문자 헥사코드 값입니다.( [#x1-#x8] | [#xB-#xC] | [#xE-#x1F] | [#x7F-#x84] | [#x86-#x9F] )
01 02 03 04 05 06 07 08 0B 0C 0E 0F 10 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 7F 80 81 82 83 84 86 87 88 89 90 9A 9B 9C 9D 9E 9F |
* 아래 쿼리로 테스트하는게 더 정확하겠네요.
select regexp_replace( (select listagg(c, ',') within group (order by c) c from ( select chr(level) c, level from Dual connect by Level <=8 union select chr(level+10) c, level+10 from Dual connect by Level <=2 union select chr(level+13) c, level+13 from Dual connect by Level <=18 union select chr(level+133) c, level+133 from Dual connect by Level <=26 union select chr(level+126) c, level+126 from Dual connect by Level <=6) a ), '['|| chr(1) || '-' || chr(8) || chr(11) || '-' || chr(12) || chr(14) || '-' || chr(31) || chr(134) || '-' || chr(159) || chr(127) || chr(128) || chr(129) || chr(130) || chr(131) || chr(132) || ']' , '뷁') from dual a; |
http://sqlfiddle.com/#!4/b62beb/243 여기서 테스트 해볼수 있어요!
반응형
'Database' 카테고리의 다른 글
mysql my session number id (0) | 2019.03.10 |
---|---|
CentOS7 MariaDB 설치 (0) | 2018.12.19 |
오라클 용량 산정 참고 쿼리 (0) | 2018.12.14 |
CentOS6 MariaDB 설치 (0) | 2018.11.13 |
oracle Ampersand "&" insert (0) | 2018.10.15 |
mysql join update (2) | 2018.10.11 |
oracle merge -> mysql replace or on duplicate key update (0) | 2018.07.25 |
오라클 임시 테이블 (0) | 2018.07.17 |