번역을 사용하여 VARCHAR2
에서 특정 문자를 삭제하려고합니다. 그러나 160
(일부 종류의 공백) 및 243
(단락 제어 문자?)은 모두 INSTR
및 TRANSLATE
에서 감지 할 수없는 "팬텀"문자 인 것처럼 보입니다. LENGTH
이 작동하지만 문자열의 유일한 문자 인 경우에만 작동합니다. LENGTH(CHR(160))
은 1
을 반환하지만 LENGTH(CHR(160) || CHR(110))
은 2
을 반환 할 때 1
을 반환합니다. 나는 REPLACE
이 문자열에서 이러한 유령 문자를 제거하는 데 사용되지만 더 읽기 쉽고 유지하기가 쉽기 때문에 번역이 더 좋습니다. 반면에 긴 중첩 또는 REPLACE
기능은 복잡합니다.일부 문자에서 작업을 변환하지 않는 이유는 무엇입니까?
교체를 사용하지 않고 VARCHAR2
에서 이러한 문자를 제거하는 다른 방법이 있습니까?
EDIT : 다른 곳의 문자 243은 ≤
으로 등록됩니다. 그러나 오라클은 명시 적으로 선택했을 때이 문자를 표시하는 데 아무런 문제가 없습니다. CHR(243)
을 선택하면 블록 교체 문자 만 표시됩니다. 또한 this source은 제어 코드이기 때문에보다 의미가있는 단락 문자를 가리 킵니다.
'ASCIISTR()'.. –
@OracleUser이 실제로 점점 더 가까이 그들을 제거 할 수있다. 그러나 지원되지 않는 문자는 제거하지 않고 '\ FFFD \ FFFD'로 변환합니다. 그것이 그들을 개조 할 수 있다면, 그것도 그것을 제거 할 수 있다고 판단합니다. '\ FFFD'가 열에 유효한 문자열 인 경우 정규 표현식을 사용할 수 없습니다. – oscilatingcretin
샘플에 대해'dump (your_column)'을 줄 수 있습니까? –