Programming/데이터베이스

[오라클 데이터베이스] 문자열 내장 함수 #1 (SUBSTR/CONCAT/TRIM/LOWER/UPPER/REPLACE/TRANSLATE)

cbw1030 2019. 10. 13. 09:54
반응형

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;

 

반응형