IF
- IF(조건식, 참일때반환값, 거짓일때반환값)
- 조건식의 판결 결과에 따라 참/거짓의 반환값을 선택하여 돌려주는 함수이다.
- 조건식의 내용은 판별할 때만 사용하기 때문에 결과값으로 출력되지 않으며, 참/거짓에 대한 반환값만 결과로 돌려주기 때문에 두 반환값의 데이터타입은 동일해야 한다.
SELECT IF(100 > 200, '참이다', '거짓이다') AS "결과";
결과 |
----+
거짓이다|
SELECT employee_id, salary, IF(salary > 10000, '1등급', '2등급') AS "급여 등급"
FROM employees;
employee_id|salary |급여 등급|
-----------+--------+-----+
100|26510.00|1등급 |
101|18700.00|1등급 |
102|18700.00|1등급 |
103| 9900.00|2등급 |
104| 6600.00|2등급 |
SELECT employee_id, last_name, salary, commission_pct,
IFNULL(commission_pct, 0)
FROM employees;
employee_id|last_name |salary |commission_pct|IFNULL(commission_pct, 0)|
-----------+-----------+--------+--------------+-------------------------+
100|King |26510.00| | 0.00|
101|Kochhar |18700.00| | 0.00|
…
145|Russell |15400.00| 0.40| 0.40|
146|Partners |14850.00| 0.30| 0.30|
147|Errazuriz |13200.00| 0.30| 0.30|
148|Cambrault |12100.00| 0.30| 0.30|
149|Zlotkey |11550.00| 0.20| 0.20|
150|Tucker |11000.00| 0.30| 0.30|
IFNULL (NULL값 처리 함수)
- 행 데이터에 NULL이 포함된 경우 제대로 된 결과가 만들어지지 않는다.
- 따라서, NULL을 다른 값으로 대체하여 연산하기 위해 사용되는 함수로 IFNULL을 사용한다.
- IFNULL(입력값, NULL대체값)
- 입력값의 파라미터에는 NULL을 포함하는 데이터를 입력하고, NULL이 아닌 행의 데이터는 그대로 입력값을 출력해버린다.
- 입력값들 중 NULL값이 있는 경우에는 NULL의 대체값으로 설정한 값으로 결과를 연산하여 출력하게 된다.
SELECT employee_id, last_name, salary, commission_pct,
IFNULL(commission_pct, 0)
FROM employees;
employee_id|last_name |salary |commission_pct|IFNULL(commission_pct, 0)|
-----------+-----------+--------+--------------+-------------------------+
100|King |26510.00| | 0.00|
101|Kochhar |18700.00| | 0.00|
…
145|Russell |15400.00| 0.40| 0.40|
146|Partners |14850.00| 0.30| 0.30|
147|Errazuriz |13200.00| 0.30| 0.30|
148|Cambrault |12100.00| 0.30| 0.30|
149|Zlotkey |11550.00| 0.20| 0.20|
150|Tucker |11000.00| 0.30| 0.30|
NULLIF(수식1, 수식2)
• 두 입력값을 비교해서 동일한 값인 경우 NULL, 다른 경우 수식1의 결과를 돌려주는 함수
수식1 = 수식2 ⇒ NULL 반환
수식1 ≠ 수식2 ⇒ 수식1 반환
select nullif(100,200) as "결과1", nullif(100,200) as "결과2";
결과1|결과2|
-----+-----+
100 | 100 |
- fisrt_name의 길이와 last_name 컬럼의 길이를 입력받아 NULLIF로 비교
- 두 문자열의 길이가 같다면 NULL, 다르다면 first_name의 길이값이 결과로 출력된다.
SELECT employee_id, first_name, last_name,
NULLIF(LENGTH(first_name), LENGTH(last_name)) AS "결과"
FROM employees;
employee_id|first_name |last_name |결
-----------+-----------+-----------+--+
100|Steven |King | 6|
101|Neena |Kochhar | 5|
102|Lex |De Haan | 3|
103|Alexander |Hunold | 9|
104|Bruce |Ernst | |
105|David |Austin | 5|
CASE-WHEN문
- 기준값과 조건값들을 비교하여 일치한 값을 가진 조건값에 대한 출력결과를 출력하는 함수.
- 조건값은 여러개를 나열 할 수 있으며, 일치하는 조건값이 없는 경우, ELSE가 있다면 지정한 기본값이 대신 출력되고, 기본값이 없다면 NULL이 출력된다.
- CASE에서는 각 조건의 값들이 실제 출력 결과가 되므로 하나의 컬럼에서 출력할 수 있도록 데이터타입을 통일시켜 작성해야 한다.
CASE 비교값(기준) WHEN 값1 THEN 결과1
WHEN 값2 THEN 결과2
...
ELSE 기본값
END
SELECT CASE 10 WHEN 1 THEN '일'
WHEN 5 THEN '오'
WHEN 10 THEN '십'
ELSE '모름'
END AS "case예제";
case예제|
------+
십 |
SELECT employee_id, last_name, department_id,
CASE department_id WHEN 10 THEN '부서 10'
WHEN 50 THEN '부서 50'
WHEN 100 THEN '부서 100'
WHEN 150 THEN '부서 150'
WHEN 200 THEN '부서 200'
ELSE '기타 부서'
END AS "부서 정보"
FROM employees;
employee_id|last_name |department_id|부서 정보 |
-----------+-----------+-------------+------+
100|King | 90|기타 부서 |
101|Kochhar | 90|기타 부서 |
102|De Haan | 90|기타 부서 |
103|Hunold | 60|기타 부서 |
....
CASE WHEN 조건식1 THEN 결과값1
[WHEN 조건식n THEN 결과값n
…]
[ELSE 기본값]
END
SELECT employee_id, last_name, department_id,
CASE WHEN employee_id = 100 THEN '100번 사원이다.'
WHEN last_name ='De haan' THEN '나는 디한이다'
WHEN department_id = 10 THEN '10번 부서직원이다'
ELSE 'etc'
END AS "부서 정보"
FROM employees;
employee_id|last_name |department_id|부서 정보 |
-----------+-----------+-------------+----------+
100|King | 90|100번 사원이다.|
101|Kochhar | 90|etc |
102|De Haan | 90|나는 디한이다 |
103|Hunold | 60|etc |
104|Ernst | 60|etc |
시스템 정보 함수
- 현재 사용자 정보를 반환하는 함수
USER()
CURRENT_USER()
SESSION_USER()
- 현재 데이터베이스 또는 스키마 정보를 반환하는 함수
DATABASE()
SCHEMA()
- 현재 MySQL 버전을 반환하는 함수
VERSION()
'DB > MySQL' 카테고리의 다른 글
[Mysql] 통계와 관련된 그룹 함수 (0) | 2023.09.16 |
---|---|
[Mysql] 그룹함수와 그룹화 (0) | 2023.09.16 |
[Mysql] 자주 쓰이는 변환함수 모음 (1) | 2023.09.16 |
[Mysql] 자주 쓰이는 날짜함수모음 (0) | 2023.09.16 |
[Mysql] 자주 쓰이는 숫자함수 모음 (0) | 2023.09.16 |