Back-end/DataBase

SQL - Function 함수란?

cheersHena 2018. 6. 21. 18:38
반응형


Function 함수(기능)

(like methods of java.. )


주로 간단한 연산, 수치 변환 등 위해 사용


프로시저와 유사하나 결과 값 반환. 즉, return 이 반드시 있다. 결과값 하나를 돌려줌,


서버가 아닌 클라이언트(사용자의 컴퓨터)에서 실행 (프로시저보다 느림.)



DECLARE 변수명 타입;

SELECT '기능' INTO  변수명;
RETURN 변수명; 

e.g)
BMI 지수를 계산하는 함수를 생성.
식: (체중/(신장*신장)) * 10000 
함수명: get_bmi_indicator

->>
CREATE FUNCTION `get_bmi_indicator` (weight INT,tall INT)
RETURNS INTEGER
BEGIN
DECLARE _return INT;
SELECT (weight/(tall*tall)) * 10000 INTO _return;
RETURN _return;
END

평수를 입력하면 제곱미터로 반환하는 함수
식: 평수 * 3.3 소수점 버림
->>
CREATE FUNCTION `get_floor_space` (space INT)
RETURNS INTEGER
BEGIN
DECLARE _return INT;
SELECT FLOOR(space * 3.3) INTO _return;
RETURN _return;
END

두 날짜 사이의 차(일수) ㄱ하기
입력) 20180207, 20180209
출력) 2
단, 두 매개변수 A와B는 A<B 관계. 아니면 0반환.
->>
CREATE FUNCTION `get_date_gap` (date1 VARCHAR(10), date2 VARCHAR(10)) 
RETURNS INTEGER
BEGIN
DECLARE _return INTEGER;
SELECT IF(date2>date1 , (TO_DAYS(str_to_date(date2, '%Y%m%d') ) ) - (TO_DAYS(str_to_date(date1, '%Y%m%d') ) ) , 0 ) INTO _return ;
RETURN _return;
END

***
변수에 값을 할당하는 법
1) SET 변수명 = 값;
-table에서 조회하지 않고
2) SELECT 값 INTO 변수명 FROM (테이블 또는 dual)
-table에서 선택(SELECT) 또는 table의 값을 찹조하여 계산 후 저장. 


조건문 
IF(조건식, 참, 거짓) : 내장함수 (built-in function) 

CASE WHEN (조건식1) THEN 참1 
             WHEN (조건식1) THEN 참1 
              WHEN (조건식2) THEN 참2 
              WHEN (조건식3) THEN 참3   
              ELSE 거짓
         END
*error option: log_bin_trust_fuction_creators 발생시
SHOW variables WHERE variable_name = '옵션명';
만약 OFF 라면 ON해준다. : SET global '옵션명' = ON; 

WHERE 컬럼 like '%문자열%'; → 컬럼값중간에 지정 문자열 포함하는 것
WHERE 컬럼 like '문자열%'; → 컬럼값이 지정 문자열로 시작하는 것
WHERE 컬럼 like '%문자열'; → 컬럼값이 지정 문자열로 끝나는 것.. 






반응형