문자열이 있습니다. 이 문자열에서 모든 특수 문자 (0-31 코드)를 선택한 표현으로 바꿔야합니다. 표현 형식이 다를 수 있습니다. \ x ?? 또는 \ 0 ???, 또는 10,13 -> \ n, 9 -> \ t 그리고 다른 모든 문자는 null로 변환됩니다. 요약 - 나는 0-31 코드를 가진 모든 기호를 찾고 적절한 표현을 위해 모든 것을 대체 할 필요가있다. 이것은 0 개 이상의 기호 일 수있다.한 문자를 여러 문자로 바꾸기 (번역)
솔루션은 9.2 Oracle에서 작동해야합니다 (즉, 정규 표현식이 없음). shuld는 매우 빠릅니다.
TRANSLATE 기능이 정말 빠릅니다. Buth 나는 하나의 심볼을 많은 것으로 대체 할 수 없다. 하나씩 교체 할 수 있습니다.
야만스럽고 쉬운 솔루션은 각 표현에 대해 32 개의 요소가있는 목록을 만드는 것입니다. 선택한 표현에 대한 것보다 목록에 루프가 생깁니다. 루프 호출 REPLACE 함수 내부. 이 경우에는 항상 32 번 대체를 호출합니다. 나는 그것이 expencive라고 생각한다.
혹시 궁금하십니까?
당신의 "야만인 솔루션"을 게시하시기 바랍니다 - 그것은이 갈 수있는 방법 같은 소리 대본. 그런 다음 더 효율적으로 만들 수 있는지를 지적 할 수 있습니다. 결국 나는 REPLACE에 대한 모든 호출이 필요할 것이라고 생각하지만, 생각보다 비용이 적게 듭니다. –
ok)) 여러 가지 방법을 시도해 보았을 때 중첩 된 REPLACE가 가장 효율적이라는 것을 알았습니다. 32 개 요소가 적어도 두 번 이상 작동하는 미리 정의 된 목록입니다. Oracle Forum의 ACE에 따르면 많은 프로젝트에서 중첩 된 대체물을 성공적으로 사용하고 있습니다. 아래의 솔루션을 참조하십시오 ... – drnk