Data Base Design System

함수

곽수진 2021. 9. 30. 01:50
반응형

단일 행 함수의 형식

  • 인자들을 받아서 하나의 값을 반환

 

  • 하나의 행에 대해 하나의 결과를 반환

 

  • 데이터 형을 수정

 

  • 중첩해서 사용할 수도 있음
function_name(column | expression, [arg1, arg2, ...])

 

FUNC3(FUNC2(FUNC1 (col, arg1), arg2), arg3)

 

가장 깊이 있는 함수가 먼저 연산을 수행함

    : FUNC1 → FUNC2 → FUNC3 순서대로 수행

 

 

문자 함수

  • lower, lcase

     : 소문자로 변환

lower('SQL Course')    /    lcase('SQL Course')

 

select dname, lower(dname) from dept;

    : dept에서 dname을 선택하고 소문자로 변환

 

 

  • upper, ucase

     : 대문자로 변환

upper('SQL Course')    /    ucase('SQL Course')

 

select upper("sql");

    : "sql"을 대문자로 변환

 

 

  • replace

     : 문자열의 일부분을 치환

replace(컬럼, '해당 문자열', '바꿀 문자열')

 

▶ select loc, replace(loc, 'NEW', 'HAPPY') from dept;

    : dept에서 loc을 선택하되, loc 컬럼에 있는 'NEW' 글자를 'HAPPY'로 치환

 

 

  • concat

     : 문자열에 문자 혹은 문자열을 결합

concat('MY', 'SQL Course')

 

select ename concat('DB_', ename, '님') from emp;

   : emp에서 ename을 선택하되, ename 앞에 'DB_', 뒤에 '님'을 결합

 

 

  • substring

     : 문자열(컬럼 데이터)의 일부를 반환

substring(column, start index, end index)

 

select job, substring(job, 1, 3) from emp;

    : emp에서 job을 선택하고 job 컬럼의 1번 index부터 3번 index까지를 반환 

 

 

  • length

     : 문자열의 길이를 측정 / 반환

length('SQL Course')

 

▶ select job, length(job) from emp;

    : emp에서 job을 선택하고 job의 문자열 길이를 출력

 

 

  • reverse

     : 문자열을 거꾸로 뒤집은 문자열을 반환

reverse('SQL Course')

 

select job, reverse(job) from emp;

    : emp에서 job을 선택하고 job 컬럼의 문자열을 거꾸로 뒤집어 출력

 

 

치환 함수

  • date_format

     : 날짜를 지정한 형식에 맞게 문자열로 변환

date_format(date, 'format')

 

select date_format(NOW(), '%Y %M %D %W');

    : 현재 날짜를 형식에 맞춰 문자열로 변환

 

NOW()현재 날짜와 시간을 반환하는 함수

 

 

★ 날짜 데이터 포맷 ★ 

- %Y (2020), %y (20) : 연도
- %M (September), %b (Sep), %m (09), %c (9) : 월
- %d (7th), %d (07), %e (7) : 일
- %W (Thursday), %a (Sun), %w(0) : 요일
- %H, %k (13), %h (01), %l (1) : 시
- %i : 분
- %S, %s : 초
- %p : AM, PM
- %r : "hh:mm:ss AM|PM"
- %T : "hh:mm:ss"

대소문자 구분 주의

 

 

  • time_format

     : 시간을 지정한 형식에 맞게 문자열로 변환

time_format(time, 'format')

 

select time_format(NOW(), '%p %k %i %s');

    : 현재 시간을 지정한 형식에 맞춰 문자열로 변환

 

 

  • str_to_date

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

      → 날짜 포함시 DATE(년-월-일)

      → 시간 포함시 TIME(시:분:초) 값 반환

      → str이 유효하지 않은 값을 포함할 시 NULL 반환

 

str_to_date('str', 'format')

 

select str_to_date('25.09.2020 14.31', '%d.%m.%Y %H.%i');

    : (날짜) 2020년 9월 25일 (시간) 오후 2시 31분 문자열을 날짜 데이터로 변환

 

 

  • cast

     : 데이터 형식 변환

select CAST(expression as type)

 

select CAST(24 as char(2));

    : 숫자 24를 크기 2의 문자열로 형변환

 

 

select CAST('4' as unsigned);

    : 숫자 4를 unsigned 형으로 형변환

      → unsigned부호가 없는 수를 의미

 

 

select CAST('-4' as unsigned);

    : 숫자 -4를 unsigned 형으로 형변환

      → 음수를 unsigned 형으로 변환하면 overflow 발생

 

 

▶ select CAST('20190927' as date);

    : 숫자 20190927을 날짜 데이터로 형변환

 

 

select CAST(date_format('2020-10-22', '%Y%m%d') as char);

    : 날짜 데이터 '2020-10-22'를 문자열로 형변환

 

 

숫자 함수

  • round

     : 정해진 형식으로 숫자를 변형 (반올림)

      → 두 번째 인자+1 자릿수에서 반올림한 결과 값을 반환

round(숫자, 자릿수)

 

Ex.

round(4234.19565, 4) -> 4234.1957
round(4234.19575, -2) -> 4200

 

select sal, round(sal/100, 0) from emp;

    : emp에서 sal를 선택하고, sal 값을 각각 100으로 나눠 첫째 자리 수에서 반올림한 결과 값 반환

 

 

  • truncate

     : 정해진 형식으로 숫자를 변형 (버림)

      → 두 번째 인자 자릿수 아래로 버린 결과 값 반환

truncate(숫자, 자릿수)

 

Ex.

truncate(4234.19565, 2) -> 4234.19
truncate(4234.19575, -2) -> 4200

 

 select truncate(4234.19565, -1);

   : 4234.19565를 소수점 앞 첫째자리 아래로 버린 결과 값 반환

 

 

  • mod

     : X(첫 번째 인자)를 Y(두 번째 인자)로 나눈 나머지 계산

mod(x, y) => x % y

 

select sal, mod(sal, 100) from emp;

    : emp에서 sal을 선택하고 sal 값을 100으로 나눈 나머지를 출력

 

 

  • pow

     : X(첫 번째 인자)의 Y(두 번째 인자) 제곱 계산

 

select sal, pow(sal, 2) from emp;

    : emp에서 sal을 선택하고 sal 값의 제곱을 계산해 출력

반응형

'Data Base Design System' 카테고리의 다른 글

Subquery  (0) 2021.10.15
JOIN  (0) 2021.10.01
연산자  (0) 2021.09.30
where  (0) 2021.09.29
SQL 클라이언트 화면 지움  (0) 2021.09.29