https://www.youtube.com/user/newlec1의 내용을 정리해서 포스팅합니다.
문자열 내장 함수에 대해 다뤄보겠습니다.
[ SUBSTR ]
- 문자열을 원하는 길이만큼 슬라이싱이 가능하다.
* SELECT SUBSTR('HELLO', 3) FROM DUAL;
-
'HELLO'를 3번째 문자열부터 자른다.
-
'LLO' 출력
* SELECT SUBSTR('HELLO', 1, 3) FROM DUAL;
-
'HELLO'를 1번째부터 3개만 자른다.
-
'HEL' 출력
* SELECT SUBSTRB('HELLO', 3) FROM DUAL;
-
SUBSTRB의 B는 byte를 의미한다. 3번째 바이트부터 자른다.
-
영어는 문자 하나당 1바이트이고 3번째 바이트부터 자르므로 'LLO' 출력
EX1) 모든 학생의 이름과 출생 월만을 조회하시오. (테이블명은 MEMBERS라 가정, BIRTHDAY는 950101이라 가정)
SELECT NAME, SUBSTR(BIRTHDAY, 3, 2) FROM MEMBERS;
EX2) 학생 중에서 전화번호가 011으로 시작하는 학생의 모든 정보를 출력하시오.
SELECT * FROM MEMBERS WHERE SUBSTR(PHONE, 1, 3) = '011';
SELECT * FROM MEMBERS WHERE PHONE LIKE '011%';
EX3) 학생 중에서 생년 월이 7,8,9월인 학생의 모든 정보를 출력하시오.
SELECT * FROM MEMBERS WHERE SUBSTR(BIRTHDAY, 3, 2) IN ('07', '08', '09');
EX4) 전화번호를 등록하지 않은 학생 중에서 생년 월이 7,8,9월인 학생의 모든 정보를 출력하시오.
SELECT * FROM MEMBERS WHERE PHONE IS NULL AND SUBSTR(BIRTHDAY, 3, 2) IN ('07', '08', '09');
[ CONCAT ]
- 문자열을 덧셈할 수 있다.
* SELECT CONCAT('홍', '길동') FROM DUAL;
그런데 문자열 덧셈 함수를 사용하는 것보다는 문자열 연산을 직접하는 것이 더 빠르다.
* SELECT 3 || '4' FROM DUAL;
[ TRIM, LTRIM, RTRIM ]
빈 공백을 없애는 함수이다.
* SELECT LTRIM(' HELLO ') FROM DUAL;
-
좌측 공백을 없애주는 함수이다.
-
'HELLO ' 출력
* SELECT RTRIM(' HELLO ') FROM DUAL;
-
우측 공백을 없애주는 함수이다.
-
' HELLO' 출력
* SELECT TRIM(' HELLO ') FROM DUAL;
-
좌, 우측 모든 공백을 없애주는 함수이다.
-
'HELLO' 출력
[ LOWER, UPPER ]
- 문자열을 소문자 또는 대문자로 변경 가능하다.
* SELECT LOWER('HeLlO') FROM DUAL;
-
'hello' 출력
* SELECT UPPER('HeLlO') FROM DUAL;
-
'HELLO' 출력
[ REPLACE, TRANSLATE ]
- REPLACE는 문자열을 문자열로 바꿔준다. (문자열, 찾는 문자열, 대치할 문자열)
- TRANSLATE는 문자열을 문자 하나하나 매칭해서 바꿔준다.
* SELECT REPLACE('WHERE WE ARE', 'WE', 'YOU') FROM DUAL;
- 'WHERE YOU ARE' 출력
* SELECT TRANSLATE('WHERE WE ARE', 'WE', 'YOU') FROM DUAL;
- 'W'는 'Y'로 바꿔준다.
- 'E'는 'O'로 바꿔준다.
- 'U'는 아무 의미가 없다.
- 'YHORO YO ARO' 출력
EX1) 회원의 이름과 주소를 조회하시오.(단, 주소는 빈칸 없이 출력하시오.)
SELECT NAME, REPLACE(ADDRESS, ' ', '') FROM STUDENTS;