DUAL TABLE : 가상 테이블 (결과용 테이블)
형식
SELECT 문자 출력값, 연산 결과값 FROM DUAL;
예시
SELECT 1 FROM DUAL;
SELECT 'A' FROM DUAL;
SELECT '가나' FROM DUAL;
SELECT 23*45 FROM DUAL;
Standard Function (표준 함수)
문자열 함수 (Character Function) 정리
1. 변환함수
LOWER() : 알파벳 값을 소문자로 변환
형식
LOWER(문자열)
예시
SELECT LOWER('HI, HELLO') FROM DUAL; -- hi, hello
UPPER() : 알바펫 값을 대문자로 변환
형식
UPPER(문자열)
예시
SELECT UPPER('hi, hello') FROM DUAL; -- HI, HELLO
INITCAP() : 첫번째 글자만 대문자로 변환
형식
INITCAP(문자열)
예시
SELECT INITCAP('HI, HELLO') FROM DUAL; -- Hi, Hello
2. 문자 조작 함수
CONCAT() : 두 문자열 연결(결합)
형식
CONCAT(값1, 값2)
예시
SELECT CONCAT(CONCAT('나는',' '),'최고입니다') FROM DUAL; -- 나는 최고입니다
|| : 문자열 연결(결합)
형식
값1 || 값2 || ... 값n
예시
SELECT '나는 ' || '최고입니다' FROM DUAL; -- 나는 최고입니다
SUBSTR() : 문자열 중 특정 문자 또는 문자열의 일부분을 선택 ★★★★★
형식
SUBSTR(문자열, 시작INDEX, 취득개수)
예시
SELECT SUBSTR('ABCDE', 3) FROM DUAL; -- CDE
-- 3번째부터 2글자 가져와라 CD
SELECT SUBSTR('ABCDE', 3, 2) FROM DUAL; -- CD
LENGTH() : 문자열의 길이를 구함
형식
LENGTH(문자열)
예시
SELECT LENGTH('ABCDE') FROM DUAL; -- 5
INSTR() : 문자열 내 위치를 구함
형식
INSTR(문자열, 찾을문자열[시작위치[, 검색차수])
참고
시작위치가 있으면 시작위치부터 찾고 시작위치가 없다면 처음부터 찾는다.
검색차수가 있으면 검색차수번째 순서에 있는 찾는문자열의 위치를 구한다.
예시
SELECT INSTR('abcde', 'a') FROM DUAL; -- 1
SELECT INSTR('123ABC456DEFABC', 'A') FROM DUAL; -- 4
-- 7번째 이후의 A의 INDEX번호
SELECT INSTR('123ABC456DEFABC', 'A', 7) FROM DUAL; -- 13
-- 7번째 이후의 1번째 나오는 A의 INDEX번호
SELECT INSTR('123ABC456DEFABCABC', 'A', 7, 2) FROM DUAL; -- 16
LPAD() / RPAD() : 나머지를 빈칸 또는 지정문자로 채운다. LPAD:왼쪽, RPAD:오른쪽
형식
LPAD(문자열, 개수, [지정문자])
RPAD(문자열, 개수, [지정문자])
예시
SELECT LPAD('BBB', 10) FROM DUAL; -- BBB
-- 지정문자 사용 예
SELECT LPAD('BBB', 10, '-') FROM DUAL; -- -------BBB
SELECT RPAD('124', 10, '0') FROM DUAL; -- 1240000000
LTRIM() / RTRIM() : 공백, 반복적인 문자를 지움 (LTRIM : 왼쪽, RTRIM : 오른쪽)
형식
LTRIM(문자열)
RTRIM(문자열)
LTRIM(문자열, 삭제문자열)
RTRIM(문자열, 삭제문자열)
예시
-- 공백 삭제
SELECT LTRIM(' BBB' ) FROM DUAL;
SELECT RTRIM('BBB ' ) FROM DUAL;
--반복적인 문자 삭제
SELECT LTRIM('AABBB', 'AA') FROM DUAL; -- BBB
SELECT RTRIM('BBBAA', 'AA') FROM DUAL; -- BBB
REPLACE() : 문자열 치환
형식
REPLACE(문자열, 삭제문자)
REPLACE(문자열, 대상문자, 교체문자)
예시
SELECT REPLACE('AAAAABCD', 'A') FROM DUAL; -- BCD
SELECT REPLACE('AAAAABCD', 'A', 'a') FROM DUAL; -- aaaaaBCD
SELECT REPLACE('AAAAABCD', 'AA', 'a') FROM DUAL; -- aaABCD
TREANSLATE() : 문자 치환
형식
TREANSLATE(문자열, 대상문자, 치환문자)
참고
글자를 지정해주지 않으면 에러발생
예시
SELECT TREANSLATE('AAAAABCD', 'A' , 'a') FROM DUAL; -- aaaaaBCD
-- 위와 동일 : 문자 치환이기 때문에
SELECT TREANSLATE('AAAAABCD', 'AA' , 'a') FROM DUAL; -- aaaaaBCD
숫자 함수 정리
CEIL() : 숫자를 올림
형식
CEIL(숫자)
예시
SELECT CEIL(13.1) FROM DUAL; -- 14
FLOOR() : 숫자를 내림
형식
FLOOR(숫자)
예시
SELECT FLOOR(13.1) FROM DUAL; -- 13
ROUND() : 숫자를 반올림
형식
ROUND(숫자)
ROUND(숫자, 자릿수)
예시
SELECT ROUND(13.4) FROM DUAL; -- 13
-- 소수점 1번째자리 까지만 인정
SELECT ROUND(13.45,1) FROM DUAL; -- 13.5
TRUNC() : 숫자를 버림(절삭)
형식
TRUNC (숫자)
TRUNC (숫자, 자릿수)
예시
SELECT TRUNC(123.456) FROM DUAL; -- 123
-- 소수점 2번째자리 까지만 인정
SELECT TRUNC(123.456, 2) FROM DUAL; -- 123.45
-- 소수점 1번째자리 까지만 인정
SELECT TRUNC(123.456, 1) FROM DUAL; -- 123.4
-- 정수 1번째자리까지 인정
SELECT TRUNC(123.456, -1) FROM DUAL; -- 120
MOD() : 숫자를 나눈 나머지
형식
MOD(숫자, 나눌수)
예시
SELECT MOD(3, 2)FROM DUAL; -- 1
POWER() : 거듭제곱(승수)
형식
POWER (숫자, 승수)
예시
SELECT POWER(3, 2) FROM DUAL; -- 9
SIGN() : 양수, 음수, 0인지 확인
형식
SIGN (숫자)
참고
양수일 때 반환값 : 1
음수일 때 반환값 : -1
0일 때 반환값 : 0
예시
SELECT SIGN(13.4) FROM DUAL; -- 1
SELECT SIGN(-13.4) FROM DUAL; -- -1
SELECT SIGN(0) FROM DUAL; -- 0
CHR() : ASCII 값으로 변환
형식
CHR(숫자)
예시
SELECT CHR(65) FROM DUAL; -- A
SELECT CHR(97) FROM DUAL; -- a
날짜 함수
SYSDATE : 오늘 날짜, 시간 반환
형식
SYSDATE
예시
SELECT SYSDATE FROM DUAL;
MONTHS_BETWEEN() : 두 날짜 사이의 월수를 계산
형식
MONTHS_BETWEEN(기준날짜, 비교날짜)
예시
SELECT MONTHS_BETWEEN(TO_DATE('20/04/23'), TO_DATE('20/01/1')) FROM DUAL; -- 3.7096..
ADD_MONTHS() : 월을 날짜에 더하기
형식
ADD_MONTHS (기준날짜, 개월수)
예시
SELECT ADD_MONTHS(TO_DATE('20/04/23'), 6) FROM DUAL; -- 20/10/23
NEXT_DAY() : 명시된 날짜로부터 다음 요일에 대한 날짜 계산 (오늘은 포함 X)
형식
NEXT_DAY (기준날짜, 요일문자열(요일번호))
참고
요일문자열 : 일요일, 월요일, 화요일, 수요일, 목요일, 금요일, 토요일, 또는 일, 월, 화, 수, 목, 금, 토
요일번호 : 1(일), 2(월), 3(화), 4(수), 5(목), 6(금), 7(토)
예시
SELECT SYSDATE, NEXT_DAY(SYSDATE, '월요일') FROM DUAL;
출력화면
LAST_DAY() : 명시된 날짜가 속한 달의 마지막 날를 반환
형식
LAST_DAY (기준날짜)
예시
SELECT LAST_DAY('24/02/22') FROM DUAL; -- 24/02/29
ROUND() : 날짜를 반올림
TRUNC() : 날짜를 절삭
형식
ROUND (기준날짜, 반올림기준)
TRUNC (기준날짜, 절삭기준)
예시
SELECT TO_CHAR(sysdate, 'HH:MI:SS') ,
ROUND(sysdate, 'YEAR'), sysdate,
ROUND(sysdate), TRUNC(sysdate, 'MONTH')
FROM DUAL;
출력화면
형변환 함수 정리
TO_CHAR () : 날짜,시간 → 문자 변환 ★★★★★
형식
TO_CHAR(날짜,문자형식)
TO_CHAR(숫자,문자형식)
예시
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH-MI-SS') FROM DUAL; -- 2021-05-31 01-02-12
SELECT TO_CHAR(123456789, '$999,999,999,999') FROM DUAL; -- $123,456,789
TO_DATE() : 문자열 → 날짜,시간변환 ★★★★★
형식
TO_DATE(문자,날짜형식)
TO_DATE(문자,숫자형식)
예시
SELECT TO_DATE('20210525') FROM DUAL; -- 2021/05/25 00:00:00
-- 위와 같다.(지정변환가능)
SELECT TO_DATE('20210525', 'YYYYMMDD') FROM DUAL; -- 2021/05/25 00:00:00
TO_NUMBER() : 문자열 → 숫자
형식
TO_NUMBER(문자)
참고
TO_NUMBER()사용시 연산도 가능하다.
예시
SELECT TO_NUMBER('123') + 45 FROM DUAL; -- 168
참고 : 하루 10분 SQL