본문 바로가기

SQL/Oracle

[Oracle] oracle함수

728x90

instr(문자열, 검색할 문자, 시작지점, n번째 검색단어)

    - 찾는 문자의 위치를 반환
    - 찾는 문자가 없으면 0을 반환
    - 찾는 단어 앞글자의 순서를 반환(1~)

 

select instr('Hello Oracle', 'O') as instr from dual; -- 7
select instr('Hello Oracle', 'Ox') as instr from dual; -- 결과 값이 없으면 0 반환
select instr('Hello Oracle', 'Oracle') as instr from dual; -- 7

select instr('Hello Oracle', 'l') as instr from dual; -- 3
select instr('Hello Oracle', 'l', 5) as instr from dual; -- 시작지점 5, 11
select instr('Hello Oracle', 'l', 1, 3) as instr from dual; -- 3번째 문자 l 11

 

regexp_instr(대상문자열, 패턴, 처음 시작위치, 몇번째 일치, 일치하는 문자열 시작위치)
    - 문자함수 instr()의 기능을 확장한 것으로 정규 표현식을 이용해 입력된 문장을 검색
    - 정규표현식 문자클래스(POSIX)

 

create table tb_Example(
    e_test varchar2(100)
);
insert into tb_example values ('abc123-abc-01');
insert into tb_example values ('abb123-abc-02');
insert into tb_example values ('acc123-abc-03');
insert into tb_example values ('add123-abc-04');
insert into tb_example values ('aee123-abc-05');
insert into tb_example values ('aff123-abc-06');
select e_test, regexp_instr(e_Test, 'bb', 1) from tb_example; -- bb의 첫글자 위치 출력

select e_test from tb_example where regexp_instr(e_Test, 'bb', 1) > 0 ; -- bb의 첫글자 위치가 0이상 인 데이터만 출력('bb'가 포함된 데이터)

 

 

regexp_substr()

- 정규 표현식 패턴을 적용하여 문자열 일부를 반환

패턴 이용하여 이메일 앞글자 잘라와서 email_id 생성

select mem_userid, mem_name, regexp_substr(mem_email, '[^%@]+') as email_id, mem_email from tb_member;

 

concat()
- 문자열을 연결하는 함수

아이디, @korea.com를 연결하여 이메일 생성

select mem_userid, mem_name, concat(mem_userid, '@korea.com') as email from tb_member;

 

rownum

- 조회된 순서대로 순번을 적용

select rownum, mem_userid, mem_name from tb_member;

가입일 순으로 조회된 데이터 3번째 데이터 까지만 출력

select rownum, mem_userid, mem_name, mem_regdate from tb_member where rownum <= 3 order by mem_regdate desc;

 

728x90

'SQL > Oracle' 카테고리의 다른 글

[Oracle] View  (0) 2022.06.15
[Oracle] join  (0) 2022.06.15
[Oracle] group by(그룹), 집계 함수 count()  (0) 2022.06.13
[Oracle] 컬럼 별명 & 중복 값 제거  (0) 2022.06.13
[Oracle] Oracle student 테이블 생성  (0) 2022.06.12