INSTR 문자열 함수
7425 단어 문자열 함수
INSTR (원본 문자열, 대상 문자열, 시작 위치, 일치 번호)
Oracle / PLSQL 에서 인 스 터 함 수 는 원본 문자열 에 있 는 문자열 의 위 치 를 되 돌려 줍 니 다.한 번 만 검색 하면 문자 의 시작 부터 문자 의 끝 까지 끝 난 다 는 것 이다.
문법 은 다음 과 같다.
instr( string1, string2 [, start_position [, nth_appearance ] ] )
매개 변수 분석:
string1: , 。
string2: string1 .
start_position: string1 。 , 1. 1 。 , , , , 。
nth_appearance: string2. , , 1. 。
주의:
String 2 가 String 1 에서 찾 지 못 하면 인 스 터 함 수 는 0 으로 돌아 갑 니 다.
예시:
SELECT instr('syranmo','s') FROM dual; -- 1
SELECT instr('syranmo','ra') FROM dual; -- 3
SELECT instr('syran mo','a',1,2) FROM dual; -- 0
(조건 에 따라 a 는 한 번 만 나타 나 고 네 번 째 매개 변수 2 는 두 번 째 a 의 위치 가 나타 나 기 때문에 두 번 째 는 다시 나타 나 지 않 았 기 때문에 결 과 는 0 으로 돌아 갑 니 다. 빈 칸 도 한 글자 로 계산 하 는 것 을 주의 하 세 요!)
SELECT instr('syranmo','an',-1,1) FROM dual; -- 돌아오다
(오른쪽 에서 왼쪽으로 세 더 라 도 색인 의 위 치 는 'an' 의 왼쪽 첫 번 째 자모의 위 치 를 봐 야 하기 때문에 여기 서 4 로 돌아 갑 니 다)
SELECT instr('abc','d') FROM dual; -- 되돌아가다
주: 이 함 수 를 이용 하여 String 1 에 String 2 가 포함 되 어 있 는 지 확인 할 수 있 습 니 다. 0 으로 돌아 가면 포함 되 지 않 음 을 표시 합 니 다. 그렇지 않 으 면 포함 되 어 있 음 을 표시 합 니 다.
내 가 쓴 코드 몇 개:
[1].
select instr(a.name,',',1,1)+1 AA1,
instr(a.name,',',1,2)+1 AA2,
instr(a.name,',',1,3)+1 AA3,
instr(a.name,',',1,4)+1 AA4,
instr(a.name,',',1,5)+1 AA5
from(select ', , , , ,D8, , , , , ' as name from dual) a;
AA1 AA2 AA3 AA4 AA5
--- --- --- --- ---
2 5 8 11 16
[2]. WHERE 조건 이 대량으로 모호 하 게 일치 합 니 다.
with keywords_table as(
select 1 id,' , , , ,D8, , , , , ,14 , , , ,D7, , D8' Name from dual
)
select a.id,
substr(','||a.name||',',
instr(','||a.name,',',1,b.rn)+1,
instr(a.name||',',',',1,b.rn)-instr(','||a.name,',',1,b.rn)
)name
from keywords_table a,
( select rownum rn from dual
connect by rownum<100
)b
where length(a.name)-length(replace(a.name,','))+1 >= b.rn
ID NAME
-- ------------------------
1
1
1
1
1 D8
1
1
1
1
1
1 14
1
1
1
1 D7
1
1 D8
17
select sitename from(
select siContent.sitename,keyList.name
from (select sitename from site_info where rownum<=100) siContent,(
with keywords_table as(
select 1 id,' , , , ,D8, , , , , ,14 , , , ,D7, , D8' Name from dual
)
select a.id,
substr(','||a.name||',',
instr(','||a.name,',',1,b.rn)+1,
instr(a.name||',',',',1,b.rn)-instr(','||a.name,',',1,b.rn)
)name
from keywords_table a,
( select rownum rn from dual
connect by rownum<100
)b
where length(a.name)-length(replace(a.name,','))+1 >= b.rn
) keyList
where siContent.sitename like ('%'||keyList.name||'%')
)group by sitename;
SITENAME
---------------------
1
2
D7
D7
2
D8
D8
D7
D7
D7
D7
3
14 M1
1
2
2
D9
D7
D7
3
2
D9
D8
1
D8
D7
D7
D9
1
D9
D8
3
D7
2
D8
6 M1
11 M1
D7
D8
D9
D7
D8
D8
D8
2
2 M1
D8
D7
D7
A B1F M7
D8
D8
D8
3
3
D6
D8
D7
D9
D9
D7
2
D8
D8
2
65
[3].. 한 줄 의 모 열 을 MO그룹 은 여러 개의 모 를 여러 줄 로 나 누 었 다.몇 개 있 으 면 몇 줄 로 나 누 어 라.
execute immediate 'insert into cy_runtime_log(ID,PROCEDURE_NAME)values(cy_runtime_log_SEQ.nextval,''cy_three_cg_bpc_diptg_result begin'')'; commit;
insert into cy_three_cg_bpc_diptg_result(TTIME,TG,BSC,MO, 64K , 64K , 16K , 16K )
with keywords_table as(select rownum as id,MO as NAME,length(MO)-length(replace(MO,',')) as MO_LEN,
TTIME,TG,BSC,MO, 64K , 64K , 16K , 16K
from cy_bpc_cg_dip_tg
where tg in ('RXOTG-200','RXOTG-98')
)
select --a.id,
a.TTIME,a.TG,a.BSC,
substr(','||a.name||',',
instr(','||a.name,',',1,b.rn)+1,
instr(a.name||',',',',1,b.rn)-instr(','||a.name,',',1,b.rn)
)name,
a. 64K ,a. 64K ,a. 16K ,a. 16K
from keywords_table a,
( select rownum rn from dual
connect by rownum<100
)b
where MO_LEN >= b.rn;