지지 On Air

2-1-3. 함수(1) 본문

개발/SQL [SQLD&SQLP]

2-1-3. 함수(1)

슈스 지지 2022. 7. 21. 00:05
반응형

 


에고 ㅠㅠ 요즘 회사일이 너무 바빠서 포스팅이 좀 늦었습니다 ㅠㅠㅠ

이번 절에서는 쿼리문 작성하실때 꼭 필요한 '함수' 부분 입니다!  

그룹함수와 윈도우함수는 2장에서 다룰예정으로, 우선 이번 절 에서는 단일행 함수에 대해서만 설명합니다.


 

과목 II. SQL 기본과 활용
  - 제1장 SQL 기본
    > 제3절 함수

 

1. 내장 함수 개요

함수는 다양한 기준으로 분류할 수 있는데, 벤터에서 제공하는 함수인 내장함수와 사용자가 정의할 수 있는 함수로 나뉠 수 있다.

내장함수는 다시 함수 입력 값이 단일행 값이 입력되는 단일행 함수와 여러 행의 값이 입력되는 다중행 함수로 나눌 수 있다.

다중행 함수는 다시 집계함수, 그룹함수, 윈도우함수로 나눌 수 있다. 

단일행 함수는 처리하는 데이터의 형식에 따라서 문자형, 숫자형, 날짜형, 변환형, NULL 관련 함수로 나눌 수 있다.

본 절에서는 Oracle과 SQL Server에서 공통으로 사용하는 중요 함수 위주로 설명한다.

 

종류 내용 함수
문자형 함수 문자를 입력하면 문자나 숫자 값을 반환 LOWER, UPPER, ASCII, CHR/CHAR, CONCAT, SUBSTR/SUBSTRING, SENGTH/LEN, LTRIM, RTRIM, TRIM
숫자형 함수 숫자를 입력하면 숫자 값 반환 ABS, SIGN, MOD, CEIL/CEILING, FLOOR, ROUND, TRUNC, SIN, COS, TAN, EXP, POWER, SQRT, LOG, LN
날짜형 함수 DATE 타입의 값을 연산 SYSDATE/GETDATE, EXTRACT/DATEPART, TO_NUMBER(TO_CHAR(d,'YYYY'|'MM'|'DD'))/YEAR|MONTH|DAY
변환형 함수 문자,숫자,날짜형 값의 데이터타입 변환 (CAST, TO_NUMBER, TO_CHAR, TO_DATE)/(CAST,CONVERT)
NULL 관련 함수 NULL 처리를 위한 함수 NVL/ISNULL, NULLIF, COALESCE

* '/' 표시가 있는것은 Oracle함수/SQL Server함수 이다.

 

단일행 함수의 중요한 특징은 다음과 같다.

- SELECT, WHERE, ORDER BY 절에 사용 가능하다.

- 각 행들에 대해 개별적으로 작용해 데이터 값들을 조작하고, 각각의 행에 대한 조작 결과를 리턴한다.

- 여러 인자를 입력해도 단 하나의 결과만 리턴한다.

함수도 인자로 상수,변수,표현식이 사용 가능하고, 하나의 인수를 가지는 경우도 있지만 여러 개의 인수를 가질 수도 있다.

- 특별한 경우가 아니면 함수의 인자로 함수를 사용하는 함수의 중첩이 가능하다.

 

2. 문자형 함수

문자형 함수는 위에서도 설명했듯, 문자 테이더를 매개 변수로 받아들여서 문자나 숫자 값의 결과를 돌려주는 함수이다. 몇몇 문자형 함수는 결과를 숫자로 리턴하기도 한다.

문자형 함수 설명
LOWER(문자열) 알파벳 문자를 소문자로 바꾼다.
UPPER(문자열) 알파벳 문자를 대문자로 바꾼다.
ASCII(문자) 문자나 숫자를 ASCII 코드 번호로 바꾼다.
CHR/CHAR(ASCII번호) ASCII 코드 번호를 문자나 숫자로 바꾼다.
CONCAT(문자열1,문자열2) 문자열1과 문자열2를 연결한다. 합성연산자 '||'(Oracle)나 '+'(SQL Server)와 동일하다.
SUBSTR/SUBSTRING(문자열,M[,n]) 문자열 중 m위치에서 n개의 문자 길이에 해당하는 문자를 돌려준다. n이 생략되면 마지막 문자까지이다.
LENGTH/LEN(문자열) 문자열의 개수를 숫자값으로 돌려준다.
LTRIM(문자열 [,지정문자])/LTRIM(문자열) 문자열의 첫 문자부터 확인해서 지정 문자가 나타나면 해당 문자를 제거한다. (지정문자가 생략되면 공백값이 디폴트)
SQL Server에서 LTRIM 함수에 지정문자 사용 불가. 공백만 제거할 수 있다.
RTRIM(문자열 [,지정문자])/RTRIM(문자열) 문자열의 마지막 문자부터 확인해서 지정 문자가 나타나는 동안 해당 문자를 제거한다. (지정 문자가 생략되면 공백값이 디폴트)
SQL Server에서 RTRIM 함수에 지정문자 사용 불가. 공백만 제거할 수 있다.
TRIM([leading|trailing|both] 지정문자 FROM 문자열) / TRIM (지정문자 FROM 문자열) 문자열에서 머리말, 꼬리말 또는 양쪽에 있는 지정 문자를 제거한다. (leading|trailing|both가 생략되면 both가 디폴트)
SQL Server에서는 TRIM함수에 leading|trailing|both 사용할 수 없다. 즉 양쪽에 있는 지정문자만 제거할 수 있다.

 

문자열 함수들의 예제는 다음과 같다.

RTRIM은 공백 제거 및 CHAR와 VARCHAR 데이터 유형을 비교할 때 유용하게 사용된다.

 

SQL문에서는 다음과 같이 사용하면 된다.

SELECT PLAYER_NAME + ' 선수' AS 선수명
FROM PLAYER;

 

실행결과

선수명
박주호 선수
이승우 선수
기성용 선수
이기혁 선수 
...

 

3. 숫자형 함수

숫자형 함수는 숫자 데이터를 입력받아 처리하고 숫자를 리턴한다.

숫자형 함수 함수 설명
ABS(숫자) 숫자의 절댓값을 리턴
SIGN(숫자) 숫자가 양수인지, 음수인지, 0인지를 구별한다
MOD(숫자1, 숫자2) 숫자1을 숫자2로 나누어 나머지 값을 리턴.
MOD함수는 %연산자로도 대체 가능
CEIL/CEILING(숫자) 숫자보다 크거나 같은 최소 정수를 리턴
FLOOR(숫자) 숫자보다 작거나 같은 최대 정수를 리턴
ROUND(숫자 [, m ]) 숫자를 소수점 m자리에서 반올림해 리턴한다.
m이 생략되면 디폴트 값은 0이다.
TRUNC(숫자 [, m]) 숫자를 소수 m자리에서 잘라서 버린다.
m이 생략되면 디폴트 값은 0이다.
SQL Server에서는 제공되지 않는 함수다.
SIN, COS, TAN, ... 숫자의 삼각함수 값을 리턴한다.
EXP(숫자) 숫자의 지수 값을 리턴 한다.
POWER(숫자1, 숫자2) 숫자의 거듭제곱 값을 리턴한다.
SQRT(숫자) 숫자의 제곱근(=√숫자) 값을 리턴한다.
LOG(숫자1, 숫자2) / LOG(숫자2, 숫자1) 숫자1을 밑수로 하는 숫자2의 로그값(LOG숫자1숫자2)을 리턴한다.
SQL Server에서는 숫자2를 밑수로 하는 숫자1의 로그값을 리턴한다.
LN(숫자) 숫자의 자연 로그 값(=LOGe숫자)을 리턴한다.
SQL Server에서는 제공되지 않는 함수다.

 

숫자형 함수들의 예제는 다음과 같다.


한 포스팅으로 함수를 끝내고 싶었는데 표도 그림도 많고 내용이 많아서 (1) (2) 로 나누게되었습니다 ㅠㅠ

다음 포스팅에서 함수에 대한 내용 마무리 하겠습니다 :)

 

하트와 구독, 댓글은 큰 힘이 됩니다 💕

 


본 포스팅은 '한국데이터산업진흥원' 에서 발행한 'SQL 전문가 가이드' 를 참고/인용 하였음을 밝힙니다.
반응형
Comments