본문 바로가기

DataBase

[SQL] 기본 함수

문자함수

LOWER, UPPER () : 문자열을 소문자, 대문자로 반환

SELECT 'DataBase', LOWER('DataBase') FROM dual; --데이터베이스에서 제공하는 가상의 테이블

SUBSTR () : 특정 부분 문자열 반환

SELECT SUBSTR('abcdefg', 2, 4) FROM dual;
-- 2번째 문자부터 4글자 반환
-- bcde
SELECT SUBSTR('ABCDEFG',4) FROM DUAL;
-- DEFG

LENGTH () : 문자열 길이

 SELECT LENGTH('12345') FROM DUAL;
 -- 5

LENGTHB () : 특정 데이터의 바이트 수 구하기

select lengthb('joker'), lengthb('조커') from dual; -- 결과 : 5, 6

LPAD, RPAD () : 빈 문자열 채우기

SELECT 'Oracle',LPAD('Oracle', 10, '#'),RPAD('Oracle', 10, '*')FROM dual;

INITCAP () : 문자열 첫번째 글자는 대문자로, 나머지는 소문자로 변환

select initcap('jokER') from dual; -- 결과 : Joker
select initcap('why so serious?') from dual; -- 결과 : Why So Serious?

INSTR () : 특정 문자 위치값 구하기 (데이터, 찾을 글자, 시작 위치, 발견 순서)

select instr('Why so serious?', 's') from dual; -- 결과 : 5
select instr('Why so serious?', 's', 7, 1) from dual; -- 결과 : 8
select instr('Why so serious?', 's', 7, 2) from dual; -- 결과 : 14

TRIM () : 문자열 앞 뒤 공백 지우기

select trim('   JOKER   ') from dual; -- 문자 좌우 공백 제거

날짜함수

SYSDATE : 오늘 날짜 기준으로 날짜 구하기

SELECT SYSDATE -1 FROM dual; -- 어제

MONTHS_BETWEEN () : 두 날짜 사이의 개월 수 구하기

select trunc(MONTHS_BETWEEN(sysdate,'09/04/20')) from dual;

NEXT_DAY () : 해당 날짜 기준으로 다음 요일 날짜 구하기

SELECT NEXT_DAY(SYSDATE, '월요일') FROM dual;

ADD_MONTHS () : 특정 날짜 기준 개월 수 더한 날짜 구하기

select add_months(sysdate, 6) from dual; -- 현재날짜의 6개월 뒤

LAST_DAY () : 특정 날짜 달의 마지막 날 구하기

select last_day(sysdate) from dual;

EXTRACT () : 특저어 날짜 년, 월, 일 등 구하기

select extract(year from sysdate) as year,
extract(month from sysdate) as month,
extract(day from sysdate) as day from dual;
      YEAR      MONTH        DAY
---------- ---------- ----------
      2023          3         21

변환 함수

TO_CHAR() : 숫자, 날짜를 원하는 형식의 문자열로 반환

--오늘 날짜를 원하는 형식으로 변환
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM dual;

--숫자를 원하는 형식으로 변환
SELECT TO_CHAR(5000000, '$999,999,999') FROM dual;

TO_DATE () : 문자열을 날짜 데이터로 변환

 SELECT TO_DATE('2021-02-18', 'YYYY/MM/DD'),TO_DATE('20210219','YYYY-MM-DD')FROM dual;

숫자함수

ABS () : 절대값 반환

select abs(-20) from dual; -- 결과 : 20

FLOOR () : 소숫점 버리기

select floor(3.14159) from dual; -- 결과 : 3

ROUND () : 특정 자릿수 반올림

select round(3.14159) from dual; -- 결과 : 3
select round(3.14159, 2) from dual; -- 결과 : 3.14
select round(15.67, -1) from dual; -- 결과 : 20

TRUNC () : 특정 자리수 이하 버리기

select trunc(3.14) from dual; -- 결과 : 3
select trunc(9.9999, 2) from dual; -- 결과 : 9.99
select trunc(99.9999, -1) from dual; -- 결과 : 90

MOD () : 나머지값 구하기

select mod(14, 3) from dual; -- 결과 : 2

SIGN () : 특정 값이 양수인지 음수인지 0인지 확인

 SELECT SIGN(-12) FROM DUAL; -- 양수면 1, 음수면 -1, 0이면 0

'DataBase' 카테고리의 다른 글

[SQL] 집계함수, GROUP BY, HAVING  (0) 2023.03.21
[SQL] JOIN ON, WHERE 차이  (0) 2023.03.21
[SQL] DDL 사용법  (1) 2023.03.21
[DB] SQL 구문 순서, 실행 순서  (0) 2023.03.20
[SQL] JOIN - 2  (0) 2023.03.20