문자열에서 특수문자를 제거하는 방법을 찾아보았습니다. 엔터나 탭같은 보이지 않는 문자를 'nonprintable character'라고 부르기도 하는데요. 인포믹스에서는 이런 문자열을 확인하려면 데이터를 파일로 내려받습니다.
> insert into test values ('a'||chr(10)||'bcd'||chr(9)||'efg');
1 row(s) inserted.
> select * from test;
a a
bcd efg
$ echo "unload to test select * from test" | dbaccess -X kr_iis
Database selected.
1 row(s) unloaded.
Database closed
$ cat test
a\0abcd\09efg|
dbaccess 유틸리티에서 -X 옵션을 사용하면 nonprintable character를 16진수 형식으로 보여줍니다.
화면에는 표시되지않고 UNLOAD를 사용하여 파일로 내려받았을 때 보입니다.
REPLACE를 사용해서 일일이 특수문자를 치환할 수도 있지만, REGEX_REPLACE 함수를 사용해서 아래처럼 간단하게 사용할 수도 있습니다. 오라클의 REGEXP_REPLACE와 사용법은 동일합니다. ( chr(1) 부터 chr(31) 까지 )
> SELECT REGEX_REPLACE (A, '['||CHR(1)||'-'||CHR(31)||']','') FROM TEST;
(expression) abcdefg
범위를 세분화하려면 아래와 같이 사용할 수도 있습니다. ( chr(1) 부터 chr(9), chr(11) 부터 chr(31) )
> SELECT REGEX_REPLACE (A, '['||CHR(1)||'-'||CHR(9)||']|['||CHR(11)||'-'||CHR(31)||']','') FROM TEST;
(expression) a
bcdefg
사용방법은 아래 사이트를 참고했습니다.
http://mrrame.blogspot.com/2010/05/oracle-how-to-replace-non-printable.html
'Informix > informix reference' 카테고리의 다른 글
Extent 최대 개수 제한 증가 (0) | 2020.02.17 |
---|---|
Index의 페이지 수 제한 증가 (0) | 2020.02.16 |
Informix의 파티션 테이블에서 rowid 참조하기 (0) | 2020.01.03 |
Informix 무료 버전 14.10.xC2의 제한 사항 완화 (0) | 2019.11.29 |
인포믹스에서 문자열을 구분자로 나누기 (0) | 2019.08.02 |