<DB> 3. 함수(1)_문자처리 함수
함수
오라클에서 제공하는 함수는 크게 두가지로 나눌 수 있다
-
단일 행 함수 : 테이블에 있는 데이터(ROW)에 각각 실행을 하는 함수 -> 여러행의 결과를 출력
-
그룹 함수 : 테이블에 있는 데이터(ROW)를 모아서 한번 실행하는 것 -> 한개행의 결과를 출력(평균,합계,총갯수)
LENGTH / LENGTHB
- LENGTH : 지정된 컬럼, 리터럴의 길이를 출력해주는 함수
SELECT LENGTH('졸려서 죽을거 같아!')
FROM DUAL;
--결과 : 11
SELECT EMP_NAME, LENGTH(EMP_NAME), EMAIL, LENGTH(EMAIL)
FROM EMPLOYEE;
- 함수를 WHERE에 사용해보기
#예)사원의 이메일의 문자수가 16개 이상인 사원 출력하기
SELECT *
FROM EMPLOYEE
WHERE LENGTH(EMAIL)>=16;
- LENGTHB : 문자열의 수를 바이트로 파악하는 함수
-- EXPRESS버전에서 한글을 저장할때 3바이트 사용한다
-- ENTERPRISE 버전에서는 2바이트를 사용한다
SELECT LENGTHB('abc'), LENGTHB('유')
FROM DUAL;
--결과 : 3 / 3
INSTR
찾는 문자열이 지정한 위치(인덱스)부터 지정한 횟수번째에 나타나는 위치(인덱스)를 반환
-- INSTR(STRING, STR, [POSITION,[OCCURRENCE]])
STRING : 문자 타입 컬럼 또는 문자열
STR : 찾으려는 문자열
POSITION : 찾을 위치 시작 값(기본 값 1)
-POSITION > 0이면 STRING의 시작부터 끝 방향으로 찾고
-POSITION < 0이면 STRING의 끝부터 시작 방향으로 찾음
OCCURRENCE : SUBSTRING이 반복될 때 지정하는 빈도(기본 값 1),->음수 사용 불가
SELECT INSTR('GD교육원','GD')
FROM DUAL; --오라클에서 인덱스 번호는 1부터 시작!!
SELECT INSTR('GD교육원 GD게임개발회사 GD경영','GD'), INSTR('GD교육원 GD게임개발회사 GD경영','GD',3),
INSTR('GD교육원 GD게임개발회사 GD경영','GD',1,3), INSTR('GD교육원 GD게임개발회사 GD경영','GD',-1),
INSTR('GD교육원 GD게임개발회사 GD경영','GD',-1,2)
FROM DUAL;
-- 결과 : 1 / 7 /16 / 16 / 7
LPAD / RPAD
왼쪽, 오른쪽에 특정 문자를 추가해주는함수
-- LPAD(STRING, N, [STR]) / RPAD(STRING, N, [STR])
STRING : 문자 타입 컬럼 또는 문자열
N : 반환할 문자(열)의 길이(바이트), 원래 STRING의 길이보다 작다면 N만큼 잘라서 표시
STR : 덧붙이려는 문자(열), 생략 시 공백문자
SELECT LPAD('병승',5,'*'), LPAD('병승',10,'*'), LPAD('병승',4,'*')
FROM DUAL;
--결과 : 병승* / 병승****** / 병승
-- 채울 문자를 생략하면 공백으로 들어간다
LTRIM / RTRIM
문자열의 왼쪽, 오른쪽에 공백, 지정문자를 제거하는 함수
-- LTRIM(STRING, STR) / RTRIM(STRING, STR)
STRING : 문자 타입 컬럼 또는 문자열
STR : 제거하려는 문자(열), 생략 시 공백문자
SELECT ' 보 라색 ', LTRIM(' 보 라색 '), RTRIM (' 보 라색 ')
FROM DUAL;
양 끝부분의 공백을 제거해 주는 것이지 문자열 사이의 공백은 제거되지 않는다는 점에 주의하자
SELECT '0000123456789',LTRIM('0000123456789','0'),LTRIM('0001000123456789','0'), LTRIM('0001000123456789','01')
FROM DUAL;
'01'의 경우 하나의 문자가 아닌 0 과 1이 따로 분리되어 각각 제거하게 된다
#예)1234567578465435붕어빵1234567578465435에서 숫자를 제거하여 출력하기
SELECT RTRIM(LTRIM('12345675784065435붕어빵123412432141','0123456789'),'0123456789') AS A
FROM DUAL;
TRIM
양쪽에 있는 값을 제거하는 함수, 공백, 지정문자(한개만)를 제거
--TRIM( STRING )
--TRIM( CHAR FROM STRING)
--TRIM( LEADING | TRAILING | BOTH [CHAR] FROM STRING)
STRING : 문자 타입 컬럼 또는 문자열
CHAR : 제거하려는 문자(열), 생략 시 공백문자
LEADING : TRIM할 CHAR의 위치 지정, 앞(LEADING) / 뒤(TRAILING) / 양쪽(BOTH) 지정 가능 (기본 값 양쪽)
--SELECT TRIM ('ZA' FROM 'ZZZAZZZ과자ZZZAZZDZDZ') --ZA는 한개의 문자가 아니므로 오류발생!
SELECT 'ZZZZZZ과자ZZZZZZ', TRIM( 'Z' FROM 'ZZZZZZ과자ZZZZZZ')
FROM DUAL;
Author And Source
이 문제에 관하여(<DB> 3. 함수(1)_문자처리 함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yim5849/DB-3.-함수1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)