Database

[SQL / Database / SQLD] 함수모음_문자, 숫자, 날짜 (Part2 - Ch01)

HSRyuuu 2024. 4. 25. 11:36
예제에 쓰이는 'DUAL'테이블은 SQL 쿼리를 작성할 때 특정 데이터를 검색할 필요 없이, 오로지 표현식의 값을 계산하거나 데이터베이스 함수를 실행하기 위해 사용하는 가상 테이블이라고 합니다.
하나의 더미 행만을 포함하고 있어서, 테스트 목적이나, DB에서 직접 계산식을 수행해야 할 때 사용한다고 합니다. 

 

문자 관련 함수


CHARACTER(ASCII 코드) : 아스키코드 -> 문자 변환

select CHARACTER(65) 
from dual;

LOWER / UPPER : 대/소문자 변환

select LOWER('Hello'), UPPER('Hello') 
from DUAL;

 

TRIM : 공백 제거

LTRIM : 왼쪽 공백 제거

select LTRIM('   Hello') from DUAL;

RTRIM(문자열) : 오른쪽 공백 제거

select RTRIM('Hi Hello  ') from DUAL;

TRIM : 공백 제거

[기본]

select TRIM('   Hello World !!!  ') from DUAL;

 

[LEADING]

select TRIM(LEADING 'Hello' from 'HelloWorld') from DUAL;

 

[TRAILILNG]

select TRIM(TRAILING 'World' from 'HelloWorld') from DUAL;

 

SUBSTR(문자열, 시작점, [길이]) : 문자열 자르기

select SUBSTR('HelloWorld!!!', 6, 8) from DUAL;

Java에서와 다르게, 인덱스가 0부터 시작하는 것이 아닌, 1부터 시작한다. 

 

[길이]를 명시하지 않을 경우, 시작점부터 끝까지 자른다.

 

LENGTH : 문자열 길이

select LENGTH('HelloWorld') from DUAL;

 

REPLACE(문자열, 변경 전, [변경 후]) : 문자열 교체

select REPLACE('HelloWorld', 'Hello', 'World') from DUAL;

 

ORACLE에서는 [변경 후]를 명시하지 않을 경우 변경 전 문자열을 제거한다.

 

LPAD / RPAD(문자열, 길이, 채울 문자) : 길이에 맞게 문자 채우기

select 
	LPAD('Hello', 10, 'x'),
	RPAD('Hello', 10, 'x')
from DUAL;

 

숫자 관련 함수


ABS(num) : 절대값

num의 절댓값을 반환한다.

CEIL(num), FLOOR(num) : 각각 올림, 내림 한 정수를 반환한다.

select
	CEIL(7.39), 
	FLOOR(5.99)
from DUAL;

 

SIGN(num) : 부호 반환

num의 부호를 반환한다. 0, 1, -1 세 가지 중 하나.

select SIGN(9), SIGN(-5.99), SIGN(0)
from DUAL;

 

ROUND(num, [자릿수]) : 반올림

자릿수 "까지" 반올림하여 반환한다.

자릿수를 명시하지 않았을 경우, 정수를 반환한다.

select 
	ROUND(3.49), ROUND(3.5), ROUND(4.3547, 1), ROUND(4.3547, 3), ROUND(163.7, -1), ROUND(163.7, -2)
from DUAL;

 

TRUNCATE(num, 자릿수) : 자릿수 버림

지정한 자릿수까지 버림 하여 반환한다.

select 
	TRUNCATE(154.293, 1), TRUNCATE(154.293, -2) 
from DUAL;

 

MOD(num1, num2) : 나머지

select 
	MOD(15, 3), MOD(9,5), MOD(-15, 0), MOD(-15, -4)
from DUAL;

 

날짜 함수


SYSDATE() : 현재 시각

select SYSDATE() from DUAL;

 

EXTRACT(XXX from SYSDATE()) : 특정 단위 추출

select  
	EXTRACT(YEAR from SYSDATE()),
	EXTRACT(MONTH from SYSDATE()),
	EXTRACT(DAY from SYSDATE()),
	EXTRACT(HOUR from SYSDATE()),
	EXTRACT(MINUTE from SYSDATE()),
	EXTRACT(SECOND from SYSDATE())
from DUAL;

 

DATE_ADD(날짜 데이터, 추가할 단위) : 날짜 연산

select 
	DATE_ADD(SYSDATE(), INTERVAL 1 YEAR) as 'ADD 1 YEAR',
	DATE_ADD(SYSDATE(), INTERVAL -1 MONTH) as 'MINUS 1 MONTH',
	DATE_ADD(SYSDATE(), INTERVAL 2 DAY) as 'ADD 2 DAY',
	DATE_ADD(SYSDATE(), INTERVAL -3 HOUR) as 'MINUS 3 HOUR'
from DUAL;

반응형