SQL #07 문자열 내장 함수

underlier12·2020년 2월 4일

SQL

목록 보기
7/8

23. 문자열 내장 함수 1

문자열 추출함수 SUBSTR

SUBSTR은 문자열의 일부를 추출할 때 사용한다. 기본적으로 SUBSTR(문자열, 시작위치, 길이)을 사용하고 SUBSTRB는 BYTE 단위로 쪼개는 것을 의미하는데 한글의 경우 3 BYTE를 사용하므로 활용하기에 적절하지 않다.

image.png

문제

회원 중 생일이 7, 8, 9월인 회원의 모든 정보

SELECT * FROM MEMBER WHERE SUBSTR(BIRTHDAY, 6, 2) IN ('07', '08', '09');

전화번호를 등록하지 않은 회원 중에서 생일이 7, 8, 9인 회원의 모든 정보

SELECT * FROM MEMBER WHERE PHONE IS NULL AND SUBSTR(BIRTHDAY, 6, 2) IN ('07', '08', '09');

문자열 연결 함수 CONCAT

CONCAT은 문자열을 연결할 때 사용한다. 기본적으로 CONCAT(문자열, 문자열)과 같이 사용한다. 하지만 문자열 연산을 더 자주 사용할 수도 있다.

SELECT CONCAT('3', '4') FROM DUAL -- 함수
SELECT 3||'4' FROM DUAL -- 연산

빈공백 제거 함수 TRIM

TRIM은 양쪽의 빈공백을 제거해주며 LTRIM은 왼쪽만, RTRIM은 오른쪽만 빈 공백을 제거해준다.

SELECT TRIM('   HELLO   ') FROM DUAL;

대문자/소문자 변환 함수 LOWER / UPPER

LOWER은 모든 문자를 소문자로 UPPER은 모든 문자를 대문자로 변환해준다.

SELECT LOWER('nEWiEC') FROM DUAL
SELECT UPPER('NeWleC') FROM DUAL

회원의 아이디 등을 대소문자 구분없이 찾고자 할 때 활용

문자열 대치 함수 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; -- 결과 : 'YHORO YO ARO'

문제

회원의 이름과 주소를 조회하되 주소의 빈칸이 없도록 하라

SELECT NAME, REPLACE(ADDRESS, ' ', '') FROM STUDENT;

24. 문자열 내장 함수 2

문자열 패딩 함수 LPAD / RPAD

LPAD(문자열, 필요길이, 채울 문자)는 문자열 길이가 충분하지 않을 경우 왼쪽에 해당 문자로 채워넣는 일을 하며 RPAD는 반대로 수행한다.

SELECT LPAD('HELLO', 10, '0') FROM DUAL; -- 결과 : 00000HELLO
SELECT RPAD('HELLO', 10, '0') FROM DUAL; -- 결과 : HELLO00000

필요길이는 BYTE단위이다

첫 글자 대문자화 INITCAP

INITCAP(문자열)은 각 영문단어 단위로 첫 글자만 대문자화 하는 함수이다.

SELECT INITCAP('the important thing is ...') FROM DUAL; -- 결과 : The Important Thing Is ...

띄어쓰기 뿐 아니라 단어 중간에 한글이 들어가면 한글 다음 음절도 첫 글자가 대문자화 된다

문자열 검색 함수 INSTR

INSTR(문자열, 검색문자열, 시작위치, 몇번째)는 문자열 내에 검색문자열이 어디에 위치하는지 알려준다. 다음과 같은 예시에서는 'TO'라는 문자열을 처음부터 찾아서 2번째 찾은 'TO'의 위치를 반환한다.

SELECT INSTR('ALL WE NEED TO IS JUST TO...', 'TO', 1, 2) FROM DUAL; -- 결과 : 24

문제

회원의 전화번호에서 두 번째 대시(-) 문자가 존재하는 위치를 출력

SELECT INSTR(PHONE, '-', 1, 2) FROM MEMBER;

회원의 전화번호에서 첫번째 대시와 두번째 대시 사이 간격

SELECT INSTR(PHONE, '-', 1, 2) - INSTR(PHONE, '-', 1, 1) - 1 FROM MEMBER;

문자열 길이 함수 LENGTH

LENGTH(문자열)은 문자열 길이를 반환한다.

SELECT PHONE, LENGTH(PHONE) FROM MEMBER;

문제

회원의 전화번호 컬럼에 포함된 문자 '-'를 제거한 전화번호 길이를 출력

SELECT LENGTH(REPLACE(PHONE, '-', '')) FROM MEMBER;
profile
logos and alogos

0개의 댓글