관리 메뉴

아이짱구

특수문자보정 | 2바이트 특수문자 1바이트 특수문자로 수정 본문

database/oracle

특수문자보정 | 2바이트 특수문자 1바이트 특수문자로 수정

아이짱구 2009. 9. 22. 18:35

2BYTE 특수문자 문자를 1BYTE 특수문자로 수정하는 방법

1. 2BYTE 특수문자 의 HEXA값은 (A1A1 ~ A4D1) 이다. ( 정확하지 않음. 특수 문자 모두를 찾지는 못했음)
2. RAWTOHEX() 함수를 이용하여 2BYTE문자가 있는 ROW를 추출한다(특수문자가 존재하는지 확인방법).

CREATE
 TABLE TEST_SPC_WORD AS
SELECT '@@' SPC_WORD FROM DUAL
 UNION ALL
SELECT '**' SPC_WORD FROM DUAL
 UNION ALL
SELECT '!!' SPC_WORD FROM DUAL ;
      
SELECT *
  FROM TEST_SPC_WORD
 WHERE RAWTOHEX(SUBSTR(SPC_WORD, 1,1)) BETWEEN 'A1A1' AND 'A4D1'
    OR RAWTOHEX(SUBSTR(SPC_WORD, 2,1)) BETWEEN 'A1A1' AND 'A4D1' ; /* 컬럼 자리수 만큼 SUBSTR() 기술 */
      
3. TRASLATE() 함수를 이용하여 2BYTE 특수숫자을 1BYTE 숫자으로 수정한다.

UPDATE TEST_SPC_WORD
   SET SPC_WORD = TRANSLATE(SPC_WORD, 'ㅡ' || '-' || '+' || '*' || '#' || '!' || '%' || ':' || ';' || '/' ||
                                      '.' || ',' || '&' || ' ' || '(' || ')' || '<' || '>' || '=' || '@' ||
                                      '$' || '[' || ']' || '^' || '_' || '`' || '{' || '|' || '}' ,
                                      '-' || '-' || '+' || '*' || '#' || '!' || '%' || ':' || ';' || '/' ||
                                      '.' || ',' || '&' || ' ' || '(' || ')' || '<' || '>' || '=' ||
'@' ||
                                      '$' || '[' || ']' || '^' || '_' || '`' || '{' || '|' || '}')
 WHERE RAWTOHEX(SUBSTR(SPC_WORD, 1,1)) BETWEEN 'A1A1' AND 'A4D1'
    OR RAWTOHEX(SUBSTR(SPC_WORD, 2,1)) BETWEEN 'A1A1' AND 'A4D1' ; /* 컬럼 자리수 만큼 SUBSTR() 기술 */
      
주의) REPLACE() 함수는 하나의 패턴에 대해서만 대체가 가능 하므로 어마어마한 반복 REPLACE()를 기술해야 하므로 TRANSLATE()가 용이함.

Comments