<DB> 3. 함수(1)_문자처리 함수

10709 단어 DB 이론DB 이론

함수

오라클에서 제공하는 함수는 크게 두가지로 나눌 수 있다

  • 단일 행 함수 : 테이블에 있는 데이터(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;

좋은 웹페이지 즐겨찾기