>  기사  >  데이터 베이스  >  Oracle에서 문자열의 일부 문자를 가로채는 방법

Oracle에서 문자열의 일부 문자를 가로채는 방법

青灯夜游
青灯夜游원래의
2022-02-14 12:47:0556577검색

Oracle에서는 Instr() 및 substr() 함수를 사용하여 문자열의 문자 일부를 가로챌 수 있습니다. 구문은 "SUBSTR('가로챌 문자열', 가로채기 시작 위치, INSTR('문자열이 될 문자열)입니다. 차단됨" ,'','검색 시작 위치','발생 횟수')-1) ".

Oracle에서 문자열의 일부 문자를 가로채는 방법

이 튜토리얼의 운영 환경: Windows 7 시스템, Oracle 11g 버전, Dell G3 컴퓨터.

oracle은 필드에서 문자열의 일부를 가로챕니다

Oracle의 Instr() 및 substr() 함수 사용:

Oracle에서는 instr 함수를 사용하여 특정 문자열을 판단하여 특정 문자열을 판단할 수 있습니다. 지정된 문자를 포함합니다.

구문은 다음과 같습니다.

instr(sourceString,destString,start,appearPosition).   
instr('源字符串' , '目标字符串' ,'开始位置','第几次出现')

여기서

  • sourceString은 소스 문자열을 나타냅니다.

  • destString은 소스 문자열에서 찾을 하위 문자열을 나타냅니다.

  • start는 검색의 시작 위치를 나타냅니다. 매개변수 선택사항, 기본값은 1입니다.

  • appearPosition은 소스 문자에서 찾고자 하는 destString의 발생 횟수를 나타냅니다. 이 매개변수도 선택사항이며, 기본값은 1입니다. 음수인 경우 검색은 오른쪽에서 왼쪽으로 수행되지만 위치 데이터는 여전히 왼쪽에서 오른쪽으로 계산됩니다.

  • 반환 값은 발견된 문자열의 위치입니다.

instr 함수의 경우 다음과 같이 자주 사용합니다. 문자열에서 지정된 하위 문자열의 위치를 ​​찾습니다. 예:

SQL> select instr('yuechaotianyuechao','ao') position from dual;
 POSITION
 ----------
 6

7번째 문자부터 검색 시작

SQL> select instr('yuechaotianyuechao','ao', 7) position from dual;
 POSITION
 ----------
 17

첫 번째 문자부터 시작하여 하위 문자열이 두 번째로 나타나는 위치 검색

SQL> select instr('yuechaotianyuechao','ao', 1, 2) position from dual;
 POSITION
 ----------
 17

instr 함수의 경우 다음과 같이 자주 사용합니다. string 하위 문자열의 위치입니다. 예:

SQL> select instr('abcdefgh','de') position from dual; 
POSITION 
---------- 
4

1부터 d가 4위이므로 4가 반환됩니다.

SQL>select instr('abcdefghbc','bc',3) position from dual; 
POSITION 
---------- 
9

3번째 문자부터 세 번째 문자가 c이므로 3부터 시작하는 문자열에서 bc를 검색하면 9가 반환됩니다.

사용법 substr 함수는 문자열에서 지정된 시작 위치와 길이를 갖는 문자열을 얻는 것입니다. 기본값은 시작 위치부터 끝까지의 부분 문자열입니다.

 substr( string, start_position, [ length ] )       substr('目标字符串',开始位置,长度)

예:

      substr('This is a test', 6, 2)     would return 'is' 
      substr('This is a test', 6)     would return 'is a test' 
      substr('TechOnTheNet', -3, 3)     would return 'Net' 
      substr('TechOnTheNet', -6, 3)     would return 'The'select substr('Thisisatest', -4, 2) value from dual

SUBSTR() 함수

1. 용도: 지정된 문자 표현식 또는 메모 필드에서 하위 문자열을 반환합니다. 2. 문법 형식:

substr(string string, int a, int b);
substr(string string, int a) ; 

형식 1:

1. 문자열 가로채야 하는 문자열

2. a가 문자열의 시작 위치를 가로채기(참고: a가 0 또는 1인 경우 처음부터 시작 3. b 차단할 문자열의 길이

형식 2:

1. string 차단할 문자열

2. a는 a-번째 문자부터 시작하는 모든 후속 문자를 차단하는 것으로 이해될 수 있습니다. 끈.

oracle은 문자열

C3411.907w15가 마침표 SUBSTR ('C3411.907w15', 0, INSTR ('C3411.907w15, '.', 1, 1) - 1)

SELECT SUBSTR ('C3411.907w15', 0, INSTR ('C3411.907w15, '.', 1, 1) - 1)
  FROM DUAL
이전에 문자열 C3411을 가로챕니다.

C3411.907w15를 마침표 뒤의 문자열 907w15로 자릅니다. SUBSTR ('C3411.907w15', INSTR ('C3411.907w15', '.', 1, 1)+1)

SELECT SUBSTR ('C3411.907w15', INSTR ('C3411.907w15', '.', 1, 1)+1)
  FROM DUAL

프로젝트 적용 예:

원본 문자열:

원본 필드에 7개의 "_"가 있습니다. 이제 마지막 "_" 뒤의 문자열을 제거하고 싶습니다.

두 단계:

첫 번째 단계는 Instr() 함수를 통해 7번째 "_" 문자를 찾는 것입니다:

select instr('Qfang.com Group_Brokerage Division_South China District_Shenzhen Shihua_ Sales Department_Nanshan Qianhai District_Qianhai Central Area_Qianhai Fifth Branch' ,'_', 1, 7) fdisplayname from SHENZHENJM1222.B

또는:

select instr('QFang.com Group_ Brokerage Division_South China District_Shenzhen Shihua_Sales Department_Nanshan Qianhai District_Qianhai Central Area_Qianhai Fifth Branch', '_',

-1, 1) fdisplayname FROM SHENZHENJM1222.B

둘 다 효과는 같습니다. 아래에서 -1은 시작 문자를 오른쪽부터 세는 것을 의미하고, 1은 첫 번째 "_"를 가져오는 것을 의미합니다.얻어진 결과는 다음과 같습니다. 그림에서:

2단계, substr() 함수를 전달하고 필수 필드를 제거합니다.

select substr(

fdisplayname

,instr(fdisplayname,'_',-1,1 )

+1

) SHENZHENJM1222.B

fdisplayname의 fdisplayname: 필드 이름을 나타내며 메타스트링에 집중하겠습니다

+1

+1은 대상 문자열 "_" 다음의 첫 번째 문자열을 가로채기 시작한다는 의미입니다.

다른 숫자의 상황을 살펴보겠습니다. substr(fdisplayname,instr(fdisplayname,'_',-1,

1)+1) SHENZHENJM1222.B

의 fdisplayname instr(fdisplayname,'_', -1,

1

) 1의 의미는 다음과 같습니다. 추천 튜토리얼: "Oracle Tutorial"

위 내용은 Oracle에서 문자열의 일부 문자를 가로채는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.