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 을 사용한다.
'Oracle > SQL' 카테고리의 다른 글
SQL 단일행 함수 - 문자함수 (Trim, Rtrim, Ltrim) 문자잘라내기 (0) | 2021.11.19 |
---|---|
SQL 단일행 함수 - 문자함수 (Replace), (Lpad, Rpad) 문자 대체하기, 특정철자를 n 개만큼 채우기 (0) | 2021.11.19 |
SQL 단일행 함수 - 문자함수 Length (문자열길이출력) (0) | 2021.11.19 |
SQL 단일행 함수 - 문자함수 Substr( 문자에서 특정단어 or 철자 추출 ) (0) | 2021.11.19 |
SQL 단일행 함수 - 문자함수 upper,lower,initcap (대소문자) (0) | 2021.11.19 |