본문 바로가기

Oracle/SQL

SQL 단일행 함수 - 문자함수 Instr (특정철자의 위치 출력)

instr (특정 철자의 위치(number)를 출력하기)

select instr('SMITH', 'M')

from dual;

-> 만약 없는 철자를 입력하게 되면 값은 '0' 이 나온다.

문제 : 이름, 이름의 철자에 알파벳 A 가 몇번째에 있는지 출력

select ename, instr(ename, 'A')

from emp;

->A가없는 사람은 0 으로 나온다.

문제 : 이름에 알파벳 a 를 포함하는 사원 이름 출력

select ename

from emp

where instr(ename, 'A' ) ! = 0 ;

설명 : instr 은 숫자를 뽑아내는 함수임으로 ename 에서 a를 포함된 문자를 출력하게 되면 반드시 값이 1이상으로 나온다.

만약 이름 철자에 'A' 가 없는 사람들을 뽑으려면 instr 로 추출한 값이 = 0 인 사람들은 뽑아야 하기때문에 비교 연산자(=)가 사용된다. 

또는 철자에 'A' 가 포함된 사람을 뽑으려면 instr 으로 추출한 값이 1  이상 사람들이기 때문에 ≥1 인 비교연산자가 사용된다. 

그리고 그냥 출력과, 포함 한다는 다르다, 어떤 단어를 포함한다 라는 의미에는  비교연산자가 들어감으로 instr 함수를 사용해야하며

그냥 일반 출력은 앞서 배웠던 substr 을 사용한다.