필드 내 특수문자 제거 2 3 1,989

by 오델 [2015.07.29 10:59:41]


테이블 내 필드를 조회해서 핵사코드로 보니 ?로 보여지는 B9 이라는 문자가 들어 있네요...

이걸 제거 하고 싶은데...

다른 조건으로 조회해서 보면 해당 필드가 마치 널처럼 보이는데...쩝

조회 조건에 ?로 조회해도 검색이 안되고...?걸 null이나 스페이스로 변환하는 방법이 없나요?

몇일째 이것만 붙들고 있네요...T.T...

by 창조의날개 [2015.07.29 14:11:30]

해당 문자만 필드에 있는 것 이라면..

임시 테이블을 하나 만들고 해당 문자 하나만 임시로 넣은후

원본 테이블을 조회 할때 WHERE절에 임시 테이블의 컬럼을 SELECT해서 WHERE 조건으로 넣어서 검색을 한번 해 보시죠..

 

 

또다른 방법으로는 SUBSTRB로 BYTE단위로 잘라가면서 확인을 해 보시길 바랍니다.

데이터 이관등을 하면서 케릭터셋의 변동에 따라 BYTE로 잘려서 저장 된걸수도...

 


by 마농 [2015.07.29 18:24:56]

B9 은 10진수로 바꾸면 11*16+9 = 185 이구요.
185 를 ASCII 코드에서 찾으면 대응되는 문자가 없습니다.
아마도 B9 이 단독으로 있는게 아니라 앞 뒤에 다른 코드와 함께 있는 듯 한데요.
2 Byte 짜리 문자(한글 등) 처럼 말이죠.
SELECT DUMP(해당컬럼, 16) 으로 헥사코드 확인해 보시구요.
앞이나 뒤에 연결되는걸 정확하게 알아야 할 것입니다.
B9 의 위치 앞뒤 글자의 (아스키코드, 헥사코드)를 확인하면 되겠구요.


예를 들면
DUMP('가', 16) 의 결과는 b0,a1 이 나오는데 b0 따로 a1 따로가 아니죠.
b0,a1 이 함께 묶여서 '가'가 되는 것입니다.
확인된 b0a1 을 숫자로 바꾸면
;
헥사확인은
SELECT DUMP('가', 16) FROM dual; ---> Typ=96 Len=2: b0,a1
숫자로변경은
SELECT TO_NUMBER('b0a1', 'xxxx') FROM dual; ---> 45217
헥사로 변경은
SELECT TO_CHAR(45217, 'xxxx') FROM dual; ---> 'b0a0'
문자로 변경은
SELECT CHR(45217) FROM dual; ---> '가'
아스키확인은
SELECT ASCII('가') FROM dual; ---> 45217


by 창조의날개 [2015.07.30 08:57:36]

케릭터셋이 UTF8이라 그런지 결과가 좀 다르게 나오네요..

한글이 3Byte라 그렇겠죠..

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