MySQL

MySQL_내장 함수_제어 흐름 함수

ssmm95 2024. 9. 10. 14:36

내장함수는 크게 제어 흐름 함수, 문자열 함수, 수학 함수, 날짜/시간 함수, 전체 텍스트 검색 함수,

형 변환 함수, XML 함수, 비트 함수, 보안/압축 함수, 정보 함수, 공간 분석 함수, 기타 함수 등으로 나뉜다

 

1. 제어 흐름 함수 : 프로그램의 흐름을 제어함 

특정 조건에 따라 서로 다른 값 반환하거나 다른 동작 실행할 수 있게 해준다

-IF(조건, 참일때 반환할 값, 거짓일때 반환할 값)

예) SELECT IF (100>200, '참이다', '거짓이다');

SELECT IF(salary > 5000, 'High Salary', 'Low Salary') FROM employees;

> salary가 5000보다 크면 'High Salary'를, 그렇지 않으면 'Low Salary'를 반환

 

-IFNULL (값, NULL 일 때 반환할 값) : 수식1이 NULL이 아니면 수식1이 반환, 수식1이 NULL이면 수식2 반환

예) SELECT IFNULL (NULL,'널이군요'), IFNULL(100,'널이군요');

SELECT IFNULL(phone, 'No Phone') FROM customers;

> phone 값이 NULL인 경우 'No Phone'을 반환하고, 그렇지 않으면 원래의 phone 값을 반환합니다.

 

-NULLIF (값1, 값2) : 수식1과 수식2가 같으면 NULL반환, 다르면 수식1만 반환

예)SELECT NULLIF(100,100) , NULLIF(200,100);

SELECT NULLIF(salary, bonus) FROM employees;

> salary와 bonus가 같으면 NULL을 반환하고, 다르면 salary 값을 반환

 

-CASE ~ WHEN ~ ELSE ~ END : CASE는 내장함수는 아니며 연산자로 분류됨 

여러 조건을 사용하여 조건에 맞는 값을 반환합니다. IF()와 달리 다중 조건을 처리할 때 유용

예)

CASE WHEN 조건1 THEN1 WHEN 조건2 THEN2 ... ELSE 기본값 END

예)

SELECT 
  CASE
    WHEN salary > 8000 THEN 'Very High'
    WHEN salary > 5000 THEN 'High'
    ELSE 'Average'
  END AS salary_level
FROM employees;

> 이 쿼리는 급여가 8000보다 크면 'Very High', 5000보다 크면 'High', 그렇지 않으면 'Average'를 반환

 

예)

SELECT CASE 10

    WHEN 1 THEN '일'

    WHEN 5 THEN '오'

    WHEN 10 THEN '십'

    ELSE '모름'

END AS 'CASE 연습'; --마지막 END AS는 출력될 행의 별칭 사용

 

 

 

  • 요약
  • IF(): 단순 조건 처리 (참일 때와 거짓일 때 다른 값 반환).
  • IFNULL(): 값이 NULL일 경우 대체 값을 반환.
  • CASE: 여러 조건을 처리할 때 사용.
  • NULLIF(): 두 값이 같으면 NULL을 반환, 그렇지 않으면 첫 번째 값을 반환.
  • COALESCE(): 첫 번째로 NULL이 아닌 값을 반환.

 

    

 

 

'MySQL' 카테고리의 다른 글

MySQL_SQL 실행 단축키  (0) 2024.09.10
MySQL_문자열 함수  (0) 2024.09.10
MySQL_변수의 사용  (0) 2024.09.10
MySQL_MySQL의 데이터 형식(숫자,문자,날짜,기타)  (0) 2024.09.10
MySQL_ON DUPLICATE KEY UPDATE  (0) 2024.09.10