데이터 치환관련 문의드립니다 0 9 1,651

by 이현희 데이터치환 [2013.11.27 10:59:23]


안녕하세요

데이터 치환관련해서~ 문의드립니다.

데이터가 한글, 영문, 숫자,기호 ,공백 이렇게 섞여 있는데요 한글,영문,숫자만 2BYTE 로 치환하고 싶은데 TO_MULTI_BYTE로 하면 공백, 기호 모든문자가 2BYTE 되네요... 공백,기호는 기존대로 1BYTE를 유지해야하거든요..
REGEXP_REPLACE로 제외할꺼 빼고 하려고 해도 쉽지 않은데요..

한글,영문,숫자만 2BYTE로 변환시킬순 없을까요?


예를들어..

WITH tab AS
(
 SELECT '자양동'  addr FROM dual UNION ALL
 SELECT '자양동123'  addr  FROM dual UNION ALL
 SELECT '자양동(123)'  addr FROM dual UNION ALL
 SELECT '자양동 (1AB)'  addr FROM dual
 )
 SELECT addr  , TO_MULTI_BYTE(addr)
from tab

addr    to_multi_byte(addr)
------------------    -------------------
자양동  자양동
자양동123 자양동123
자양동(123)  자양동(123)
자양동 (1AB)    자양동 (1AB)

 이렇게 나오는데 변환부분에 공백/기호를 제외하고 2byte 로 치환하고 싶습니당 ㅠㅠ
by 마농 [2013.11.27 11:13:51]
SELECT addr
     , TRANSLATE(addr, x, TO_MULTI_BYTE(x)) addr2
  FROM tab
     , (SELECT 'abcdefghijklmnopqrstuvwxyz'
            || 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
            || '1234567890' x
          FROM dual
        )
;

by 이현희 [2013.11.27 11:30:52]
감사합니다~~~~

by 아발란체 [2013.11.27 11:15:58]
--1byte를 공백을 넣어 2byte로 만들어도 되는 것이라면
--한글은 이미 2byte이니 따로 처리를 안하고 영문과 숫자에 대해서만 정규식으로 공백을 추가
SELECT
  addr,
  REGEXP_REPLACE(addr, '([a-z0-9)])', '\1 ')
FROM
  TAB

by 용근님 [2013.11.27 11:17:35]

by 아발란체 [2013.11.27 11:22:04]
우잉... 사랑넷에 질문과 답변이 똑 같네요... ^^;
질문자 아이디까지 같았으면 copy&paste로 오해를..

by 이현희 [2013.11.27 11:31:03]

감사합니다~~~


by 이현희 [2013.11.27 11:19:22]
와!!!
2시간 고민고민했는데~ 역시 올리길 잘했네요^^ 감사합니다~~~!!

by 이현희 [2013.11.27 11:29:45]
그러게요~ 저도 사이트에서 개발자분이 문의를 하셔서
이것저것 해보다가ㅎㅎ

답변 주신거 보니 어찌 그래 샘플을 동일하게 만든건지 ㅎㅎ

by feelie [2013.11.27 13:47:49]

오늘 Translate의 용도를 알게된 기분인데요..
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입