반응형
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
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
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
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 '%문자열'; → 컬럼값이 지정 문자열로 끝나는 것..
반응형
'Back-end > DataBase' 카테고리의 다른 글
SQL - View 뷰란? Trigger 트리거란? (0) | 2018.06.22 |
---|---|
SQL - Procedure 프로시저란? (0) | 2018.06.22 |
SQL -JOIN 조인이란? (INNER / OUTER) (0) | 2018.06.21 |
SQL 통계 - 행열 뒤집기 연습문제 난이도 ★★★★★ (0) | 2018.06.20 |
SQL 통계_ 행열 뒤집기. ( 시계열 표현 ) (0) | 2018.06.20 |