2010-07-23 6 views
-1

PL/SQL을 사용하여 Oracle의 테이블에서 비 ASCII 값을 제거하려면 어떻게합니까?Oracle 테이블에서 비 ASCII 값 제거

+4

비 ASCII는 사용자 환경에서 무엇을 의미합니까? 0-127 범위를 벗어나는 값? 또는 32 ~ 127 범위의 "인쇄 가능 ASCII"가 아닌 값을 의미합니까? –

+3

질문에 대한 자세한 내용은 더 자세히 설명해야합니다. ASCII는 문자에 숫자 값을 할당하는 단순한 메커니즘입니다. 따라서 테이블의 데이터는 모두 ASCII입니다. 유니 코드에 대한 질문입니까? 세계화? 또는 일반 ASCII와 확장 ASCII 세트를 구별 할 수 있습니까? – APC

+2

주의 사항 downvoters! 흥미롭고 보람있는 질문의 커널이 적어도 있습니다. @shubhra에게 질문을 수정할 기회를주십시오. – APC

답변

0

영숫자가 아닌 문자가 포함 된 VARCHAR2 컬럼이있는 테이블을 가지고 있다고 가정하면 SQL 문으로 대체 할 수 있습니다. 이 같은 시작하여 필요에 맞게 수정할 수 있습니다

UPDATE mytable x 
    SET x.col = REGEXP_REPLACE(x.col, '[^[:alnum:] ]', ' ') 
WHERE REGEXP_LIKE (x.col, '.*[^[:alnum:]].*') 

이 문은 공백으로 모든 영숫자가 아닌 문자를 대체하기위한 시도로 정규 표현식을 사용합니다. 쉼표와 같은 다른 원하는 문자를 제자리에두고 싶다면 조정해야 할 것입니다.

물론 몇 가지 열에서 소수의 문자를 대체하는 것보다 복잡한 것이 필요한 경우 다른 방법을 사용해야 할 수도 있습니다. 이럴 경우 질문을 확대하여 특정 문제에 대한 자세한 정보를 제공 할 수 있습니다.