공부/데이터베이스

[데이터베이스] 오라클 내장함수 - 문자열함수

ghhong 2021. 10. 21. 16:05

문자열함수 - SUBSTR

SELECT SUBSTR(‘HELLO’, 1, 3) FROM DUAL; -- HEL 시작위치, 개수

SELECT SUBSTR(‘HELLO’, 3) FROM DUAL; -- LLO 시작위치

SELECT SUBSTRB(‘HELLO’, 1, 3) FROM DUAL; --3번째 바이트부터 자른다.

SELECT NAME, SUBSTR(BIRTHDAY, 6, 2) AS MONTH FROM MEMBER; --이름, 태어난 달

SELECT * FROM MEMBER WHERE SUBSTR(PHONE, 1, 3) = ‘011’; -- 번호가 011로 시작

ð 함수호출이 WHERE절에 들어가면 오래걸림

ð SELECT * FROM MEMBER WHERE PHONE LIKE ‘011%’;

SELECT * FROM MEMBER WHERE SUBSTR(BIRTHDAY,7,1) IN (‘7’,’8’,’9’); --태어난 달이 7,8,9

SELECT * FROM MEMBER WHERE SUBSTR(BIRTHDAY,7,1) IN (‘7’,’8’,’9’) AND PHONE IS NULL;

 

문자열함수 CONCAT , ||

SELECT CONCAT(‘’,’길동’) FROM DUAL; -- 홍길동

SELECT 3||’4’ FROM DUAL; -- 34 더 빠름

 

문자열함수 - TRIM 공백제거

SELECT LTRIM(‘      HELLO     ‘) FROM DUAL; --왼쪽
SELECT RTRIM(‘      HELLO     ‘) FROM DUAL; --오른쪽
SELECT TRIM(‘      HELLO     ‘) FROM DUAL; --양쪽

 

문자열함수 소대문자

LOWER, UPPER

 

문자열함수 대치함수

SELECT REPLACE(‘WHERE WE ARE’, ‘WE’, ‘YOU’) FROM DUAL; --WEYOU로 바뀐다.

SELECT TRANSLATE(‘WHERE WE ARE’, ‘WE’, ‘YOU’) FROM DUAL; --WY, E O로 바꾼다.

SELECT NAME, REPLACE(ADDRESS, ‘ ‘, ‘’) FROM MEMBER; --빈칸제거

 

문자열함수 패딩함수

SELECT LPAD(‘HELLO’, 5) FROM DUAL;

SELECT LPAD(‘HELLO’, 10, ‘0’) FROM DUAL; -- 10자중에 부족한 5자를 왼쪽에 0으로 채움

SELECT RPAD(‘HELLO’, 10, ‘0’) FROM DUAL; -- 10자중에 부족한 5자를 오른쪽에 0으로 채움

SELECT RPAD(NAME,3,’_’) FROM MEMBER; --이름이 3자가 안되면 오른쪽을 _로 채움

ð 영어는 한 자당 1바이트, 한글은 2바이트 -> 주의

 

문자열함수 첫문자를 대문자로

SELECT INITCAP(‘the …’) FROM DUAL; -- The…

SELECT INITCAP(‘the most important thing is…’) FROM DUAL; --The Most Important Thing…

 

문자열함수 위치 찾기

SELECT INSTR(‘ALL WE NEED TO IS JUST TO …’, ‘TO’, 1, 2) FROM DUAL;

ð INSTR(문자열, 검색문자열, 시작위치, 몇번째?)

SELECT INSTR(PHONE,’-‘,1,2)-INSTR(PHONE,’-‘,1,1)-1 FROM DUAL; -- ‘-‘의 위치차이

SELECT SUBSTR(PHONE,5, INSTR(PHONE,’-‘,1,2)-INSTR(PHONE,’-‘,1,1)-1)) FROM MEMBER;

 

문자열함수 길이

SELECT LENGTH(‘HELLO’) FROM DUAL;

SELECT LENGTH(REPLACE(PHONE,’-‘,’’)) FROM MEMBER;

 

문자열함수 코드값 <-> 문자

SELECT ASCII(‘A’) FROM DUAL;

SELECT CHR(65) FROM DUAL;