예제에 쓰이는 '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;
반응형
'Database > SQL' 카테고리의 다른 글
[DB / SQL] DB Join 조인 (left join / right join / inner join / outer join) (0) | 2024.02.22 |
---|---|
[SQL/MariaDB] ALTER TABLE 명령어 정리 (0) | 2023.07.27 |
[SQL/MySQL] SELECT 데이터 조회 (0) | 2023.04.25 |
[SQL/MariaDB] 데이터 추가, 수정, 삭제 (INSERT, UPDATE, DELETE) (0) | 2023.04.20 |
[SQL/MariaDB] Constraints / Table 생성하기 (0) | 2023.04.20 |