aaa_1, bb_5, c_21, a_b와 같은 값이 있습니다. 이제이 값에서 밑줄과 밑줄을 제거해야합니다. A_b (string_string)는 유효한 값이므로 제거 할 필요는 없습니다. 기본적으로, 문자열에서 후행 _ [임의의 숫자] 만 추출하려면 regexp patern이 필요합니다.Oracle regexp - 문자열에서 후행 밑줄과 숫자를 제거합니다.
나는 오라클 11gR2
어떤 제안을 사용하고?
aaa_1, bb_5, c_21, a_b와 같은 값이 있습니다. 이제이 값에서 밑줄과 밑줄을 제거해야합니다. A_b (string_string)는 유효한 값이므로 제거 할 필요는 없습니다. 기본적으로, 문자열에서 후행 _ [임의의 숫자] 만 추출하려면 regexp patern이 필요합니다.Oracle regexp - 문자열에서 후행 밑줄과 숫자를 제거합니다.
나는 오라클 11gR2
어떤 제안을 사용하고?
당신은 정규식 표현으로 REGEXP_REPLACE를 사용할 필요 '\ _ [[: 자리 :]] {1}'
이것은이 (탈출) 찾으 후 하나 개 이상의 숫자와 밑줄로 변환:
를예 :
SELECT REGEXP_REPLACE('a_b', '\_[[:digit:]]{1,}'),
REGEXP_REPLACE('aaa_1', '\_[[:digit:]]{1,}'),
REGEXP_REPLACE('c_21', '\_[[:digit:]]{1,}'),
REGEXP_REPLACE('bb_5', '\_[[:digit:]]{1,}')
FROM dual;
반환
a_b
aaa
c
bb
당신이 알파 문자는 다음의 끝을 의미하는 정규식 문자열의 끝에 $를 추가하지있을 경우에만 밑줄과 숫자를 제거 있는지 확인하려면
문자열.첫 번째없이
SELECT REGEXP_REPLACE('bb_5b', '\_[[:digit:]]{1,}$'),
REGEXP_REPLACE('bb_5b', '\_[[:digit:]]{1,}'),
REGEXP_REPLACE('bb_55', '\_[[:digit:]]{1,}$'),
REGEXP_REPLACE('bb_55', '\_[[:digit:]]{1,}')
FROM dual;
반환 "$"와
bb_5b
bbb
bb
bb
정규 표현식은 어색 할 수 있지만,이 링크는 내가 오라클 정규식 표현식 발견 한 것을 이해하는 것이 가장 쉬운 방법 중 하나입니다 http://www.dba-oracle.com/t_regular_expressions.htm
희망이 도움이됩니다.
숫자가있는 모든 값을 무시하는 다른 버전입니다. Ollie와 같은 기본 접근 방식이지만 글자인지 확인하기 위해 가치의 첫 부분을 고려합니다. 값의 두 부분을 캡처하여 조건과 일치하는 첫 번째 부분으로 바꿉니다.
select
regexp_replace('A_1', '([A-Za-z]+)(\_\d+)', '\1'),
regexp_replace('A_B', '([A-Za-z]+)(\_\d+)', '\1'),
regexp_replace('cc_21', '([A-Za-z]+)(\_\d+)', '\1'),
regexp_replace('1_1', '([A-Za-z]+)(\_\d+)', '\1')
from dual;