본문 바로가기
Oracle SQL

문자 함수

by Nowkeeh Ahc

대소문자 변환 함수

 테이블에 저장된 데이터에는 대소문자가 섞여 있을 가능성이 높다. 오라클에서는 SELECT, WHERE 등 예약어(키워드)의 대소문자를 구별하지 않지만, 이를 제외한 모든 경우에는 대소문자가 구별되므로 대소문자가 섞여 있는 문자열을 검색하기 위해 문자 데이터를 모두 대문자나 소문자로 바꿔주는 함수를 사용하는 것이 바람직하다. 주요 대소문자 변환 함수는 아래와 같다.

함수 기능
LOWER(컬럼명|표현식) 문자열을 소문자로 변환한다.
UPPER(컬럼명|표현식) 문자열을 대문자로 변환한다.
INITCAP(컬럼명|표현식) 문자열의 첫 문자만 대문자로 변환하고, 나머지는 소문자로 변환한다.

ex. 오라클 내부에서 사용하고 있는 dual이라는 테이블에서 Oracle sql이라는 컬럼명을 소문자, 대문자, 그리고 첫 문자만 대문자로 각각 변환하여 출력하라.

SELECT LOWER('Oracle sql'), UPPER('Oracle sql'), INITCAP('Oracle sql')
FROM dual;

 

문자열 크기 계산

함수 기능
LENGTH(컬럼명|표현식) 문자열의 길이를 계산한다.
LENGTHB(컬럼명|표현식) 문자열의 바이트 수를 계산한다.

ex. 상품코드와 상품이름의 문자열의 길이와 바이트 수를 출력하라.

SELECT 상품명, LENGTH(상품명), LENGTHB(상품명) 
FROM 상품;​
SELECT 상품코드, LENGTH(상품코드), LENGTHB(상품코드) 
FROM 상품;

LENGTH 함수는 문자열의 글자 수를 계산하고, LENGTHB 함수는 문자열의 길이를 바이트 단위로 계산한다. LENGTH 함수의 결과값은 한글의 경우에도 정확한 글자 수를 검색할 수 있다. 그러나 LENGTHB 함수는 문자열의 바이트 수를 계산하므로 한글의 경우 LENGTH 함수와 결과값이 다르게 나타난다.

 

문자 추출

함수 기능
SUBSTR(컬럼명|표현식, 시작위치, 출력 문자의 수) 문자열 내에 지정된 위치의 문자열을 반환한다.
INSTR(컬럼명|표현식, 검색문자, [시작위치]) 검색 문자의 위치를 반환한다.
SELECT SUBSTR('Oracle sql', 2),
	SUBSTR('Oracle sql', -2),
	SUBSTR('Oracle sql', 1, 2),
	SUBSTR('Oracle sql', -1, 2)
FROM dual;

 

문자 삭제

함수 기능
LTRIM(컬럼명|표현식, [삭제 문자]) 왼쪽에서 특정 문자를 삭제한다.
RTRIM(컬럼명|표현식 [삭제 문자]) 오른쪽에서 특정 문자를 삭제한다.
TRIM([leading | trailing | both] 삭제문자 from 컬럼명|표현식) 왼쪽, 오른쪽, 양쪽에 있는 특정 문자를 삭제한다.
SELECT LTRIM('-----Oracle sql-----', '-') "LTRIM",
       RTRIM('-----Oracle sql-----', '-') "RTRIM"
FROM dual;

 

문자 추가 및 결합

함수 기능
LPAD(컬럼명|표현식, 자릿수, 추가문자) 문자열의 왼쪽 공백에 특정 문자를 추가한다.
RPAD(컬럼명|표현식, 자릿수, 추가문자) 문자열의 오른쪽 공백에 특정 문자를 추가한다.
CONCAT(컬럼명|표현식, 컬럼명|표현식) 두 개의 문자열을 결합한다.

ex. 구매상품구성 테이블에서 소계금액의 데이터가 변경되는 것을 방지하기 위해 상품코드는 왼쪽 정렬하여 총 6개의 자리로 할당한 후 나머지 자리에 ‘*’를 채우고, 판매금액은 오른쪽 정렬하여 총 10개의 자리로 할당한 후 나머지 자리에 ‘*’를 채워 출력하여라.

SELECT RPAD(상품코드, 6, '*'), LPAD(소계금액, 10, '*')
FROM 구매상품구성;

ex. 고객의 생일을 추출하되, 연도는 ‘****-‘로 가려서 월일만 출력하도록 하라.

SELECT CONCAT('****-', SUBSTR(생년월일, 6,5))
FROM 고객;

 

문자 변환

SLELECT REPLACE(컬럼명|표현식, 검색문자열, 대체문자열)

 


This post was written based on what I read and studied the book below.

http://www.yes24.com/Product/Goods/99002458

댓글