Oracle) INSTR,SUBSTR,REPLACE 함수
LENGTH : 입력된 문자열의 길이 값을 출력해준다
LENGTH(컬럼 또는 문자열)
INITCAP() 함수 : 첫글자를 대문자로 바꿔준다
ex) S INITCAT('hello'); //괄호안에 반드시 문자가 들어가야한다. 어떻게 변환이 되는지 확인해보자
F dual; //오라클에서 만들어놓은 빈 테이블, 함수에 대한 결과값을 보고 싶을 때 사용
// from 뒤에 dual을 사용한다. emp 같은 경우는 정보를 가져 오는 것
UPPER() / LOWER() 함수
W LOWER(ename) = 'ford'; // 데이터를 대소문자로 구분하지 않고 소문자로 바꿔준다
UPPER(ename) = ' ' ; // 어떤 데이터든 구분하지 않고 대문자로 바꿔준다
INSTR ( ) 함수 : 주어진 문자열이나 컬럼에서 특정 글자의 위치를 찾아주는 함수
INSTR( 문자열, '찾고자 하는 숫자', 어디서 찾을 것인지 시작위치, 몇번째)
첫번째 문자를 기준으로 3번째(-)가 나오는 위치를 출력.
시작위치를 -로 변경하고 비교하기
뒤에서부터 세번째= 4
bar를 기준으로 3번째 위치 출력
select 'A-B-C-D-E', INSTR('A-B-C-D-E','-',1,1) "INSTR" FROM dual
-> 'A-B-C-D-E' 중 '-' 를 기준으로 1번째에서부터 1번째 위치 출력
select 'A-B-C-D-E', INSTR('A-B-C-D-E','-',1,2) "INSTR" FROM dual
-> 'A-B-C-D-E' 중 '-' 를 기준으로 1번째에서부터 2번째 위치 출력
INSTR( ) 를 사용할 때 INSTR( TEL,')') 을 입력하면 TEL의 내용중 ')'의 내용이 가 포함된 것을 출력해준다.
INSTR 를 사용한것과 사용하지 않은 것을 위에 사진을 통해 비교해보면 쉽게 이해할 수 있다.
마지막에 입력한 명령어를 보면 INSTR(TEL, ')' )-1 에서 -1을 한 이유는 02) 에서 )를 빼고 02만 출력할때 사용한다,
보통 INSTR 과 SUBSTR을 같이 사용하는 경우가 많다.
SUBSTR()함수
SUBSTR('문자열' 또는 컬럼명,LENGTH)
이 함수의 기능은 주어진문자열에서 특정 길이의 문자만 골라낼때 사용하는 함수이다.
SUBSTR을 사용할 때 주의할 점
-를 붙이지 않으면 왼쪽에서 오른쪽으로 검색해서 글자를 골라내는데
-를 붙이면 오른쪽에서 왼쪽으로 검색을 한 후 왼쪽에서 오른쪽으로 글자수를 골라낸다
중요하고 자주 사용하는 함수이므로 꼭 이해하고 넘어가야 한다
SUBSTRB()함수
SUBSTR 함수와 문법은 동일하지만 차이점이 있다면 byte의 출력 차이이다.
영어일 경우 동일하지만 한글같이 다른 글자들은 결과가 다르게 나올 수 있으므로 주의해야 한다.
SUBSTR(TEL,1,INSTR(TEL,')'-1) : 이렇게 보면 SUBSTR과 INSTR을 같이 사용해서 복잡해보일텐데 사실 단순하다
SUBSTR 을 통해 TEL의 컬럼에서 1번째부터 INSTR(TEL,')'-1) 까지 출력을 해준다,
다시, INSTR(TEL,')'-1) 은 TEL의 컬럼에서 ')' 이 나올때까지 출력하지만 -1 이 있으므로 ) 는 빼고 출력한다
즉 위에 사진을 보면 지역번호만 알아내고 싶을 때 사용할 수 있다.
REPLACE() 함수
REPLACE('문자열 OR 컬럼명','문자1','문자2')
예를 들어 주민번호나 이름 등을 ** -- 등의 기호를 사용해서 가릴 때 사용한다.
위에 사진을 해석해보면 emp 테이블에 ename 컬럼에서 SUBSTR 함수를 통해
2글자를 REPLECE 함수를 사용하여 **로 가려본다. DEPTNO=10으로 지정
위에 사진도 마찬가지로 SUBSTR을 통해 3번째부터 2글자까지 --로 가릴 수 있다.
ex) 문제 1
Student 테이블에서 deptno1이 101번인 학생들의 이름과 주민번호를 출력하되
주민번호의 뒤 7자리는 '-' 과 '/' 를 통해 가리고 출력하라
ex) 문제 2
Student 테이블에서 아래 그림과 같이 depton1 이 102 번인 학생들의
이름과 전화번호, 전화번호에서 국번 부분을 '*' 처리하여 출력하라
(국번은 3자리로 설정)
문제 3)
Student 테이블에서 아래 그림과 같이 depton1 이 102 번인 학생들의
이름과 전화번호, 전화번호에서 마지막 4자리를 * 로 표시하시오
(국번은 3자리로 설정)