데이터 형식이 varchar 인 데이터베이스와 열 (y)에 테이블 (x)이 있습니다. 이 열은 1., 2 \, .5, 2], 4.3 등의 값을 포함합니다.Oracle varchar string replacement
점의 값이 뒤에있는 특수 문자를 제외한 열의 모든 값을 바꾸려고합니다.
예 : 2.3, 4.5, 7.1과 같은 값을 대체하고 싶지 않습니다.
dot 또는 dot으로 시작하는 값 뒤에 값이 없으면 dot을 null로 바꾸고 싶습니다.
예는 :
- 1. 2.
- 0.1 2. 0.2 1 2뿐만 아니라 교체해야 1로 대체한다.
나는 스크립트 아래 시도하지만
update <table_name>
set <column_name> = regexp_replace(regexp_replace(column_name, '[^A-Z0-9 ]', '.'),
' {2,}', ' ')
/
이 도와주세요 작동하지 않았다.
Oracle 11g DB를 사용하고 있습니다.
내가 이해하지 못하는 ... '1. , 2 \, .5, 2], 4.3'는 단일 행의 단일 입력 문자열입니까? 결과는 쉼표로 구분 된 숫자 목록 (정수 또는 소수)이어야합니다. 23 절을 왜 23 절로 바꿔야하는지 이해합니다. 그러나 왜'.2'를'0.2'로 대체하지 않고'.2'를'2'로 바꾸고 싶습니까? 많은 국가에서'.2'가'0.2'의 일반적인 변형이라고 알고 있습니까? ** 실제로 ** .2를'2 '로 바꾸고 싶다는 것을 확인해주십시오. 그러면 문제 진술을 바꾸기 위해 다시 오지 않을 것입니다. – mathguy
그래서 소수점 이외에 쉼표 사이의 모든 특수 문자를 간단하게 제거하고 싶습니까? 문자열에 문자가있을 수 있습니까? 그렇다면 어떻게 처리해야합니까? 그런 다음 - 입력 문자열에'...., 32.9.2, .... '와 같은 것이 있으면 어떨까요? (소수점 두 자리?) 서명은 어떨까요? '2. , 30 $, + 12.5, -42.23'? 어떻게 처리해야합니까? – mathguy
@mathguy 문자열이 단일 입력 문자열이 아닙니다. 내가 언급 한 각각의 문자열은 새로운 가치를 연속적으로 나타냅니다. .2를 0.2로 바꾸지 않고 2를 2로 바꾸려고하는 이유는 실제 값이 2이기 때문입니다. 일부 값의 데이터 마이그레이션 중에 숫자 앞에 점이 추가됩니다. 네, 모든 특수 문자를 제거하고 싶습니다. 문자열에 문자가 없습니다. 두 개의 소수점 문자열이 없습니다. +, -, $ 기호도 Null 값으로 대체해야합니다. –