MySQL CASE 구조
SQL이CASE
구문은 다음과 같습니다.
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
하지만 이게 어떻게 작동되는지 이해가 안 돼요. 아마도 제가 이 문제를 생각하고 있기 때문인 것 같아요.if
진술.
테이블에 필드가 있는 경우user_role
예를 들어, "Manager", "Part Time" 등의 이름이 포함된 필드를 생성하려면 어떻게 해야 합니까?role_order
역할에 따라 번호가 달라져요.이 예제의 경우 "user_role = 'Manager'이면 role_order = 5"입니다.
제가 찾는 사람은 물고기 잡는 법보다 물고기 잡는 법을 가르쳐야 한다는 걸 알아두세요.
CASE
스위치 문에 가깝습니다.사용할 수 있는 구문은 두 가지가 있습니다.첫 번째에서는 원하는 비교문을 사용할 수 있습니다.
CASE
WHEN user_role = 'Manager' then 4
WHEN user_name = 'Tom' then 27
WHEN columnA <> columnB then 99
ELSE -1 --unknown
END
두 번째 스타일은 하나의 값만 조사하는 경우로, 조금 더 간결합니다.
CASE user_role
WHEN 'Manager' then 4
WHEN 'Part Time' then 7
ELSE -1 --unknown
END
CASE
MySQL에서는 문과 식 모두 사용법이 조금씩 다릅니다.
성명서로서CASE
는 스위치 문과 거의 동일하게 기능하며 위의 문서(링크)의 다음 예시와 같이 스토어드 프로시저에 도움이 됩니다.
DELIMITER |
CREATE PROCEDURE p()
BEGIN
DECLARE v INT DEFAULT 1;
CASE v
WHEN 2 THEN SELECT v;
WHEN 3 THEN SELECT 0;
ELSE
BEGIN -- Do other stuff
END;
END CASE;
END;
|
단, 표현으로서 다음 절에서 사용할 수 있습니다.
SELECT *
FROM employees
ORDER BY
CASE title
WHEN "President" THEN 1
WHEN "Manager" THEN 2
ELSE 3
END, surname
또한 스테이트먼트로서도 식으로서도 첫 번째 인수는 생략할 수 있습니다.WHEN
조건을 붙여야 합니다.
SELECT *
FROM employees
ORDER BY
CASE
WHEN title = "President" THEN 1
WHEN title = "Manager" THEN 2
ELSE 3
END, surname
다른 답변에서는 을 언급하지 않았기 때문에 이 답변을 드렸습니다.CASE
는 스테이트먼트로서도 표현으로서도 기능할 수 있습니다.이들 간의 주요 차이점은 진술서 양식이 다음과 같이 끝난다는 것이다.END CASE
그리고 표현 형태는 단지END
.
테이블이 필요 없는 케이스의 간단한 사용 예를 보고 싶었습니다.이 값은 홀수 또는 짝수 중 어느 쪽이 홀수인지 여부에 따라 짝수를 반환합니다.
SELECT CASE MOD(SECOND(NOW()),2) WHEN 0 THEN 'odd' WHEN 1 THEN 'even' END;
언급URL : https://stackoverflow.com/questions/3389713/how-does-mysql-case-work
'it-source' 카테고리의 다른 글
'P'는 DateInterval 형식으로 무엇을 의미합니까? (0) | 2023.01.03 |
---|---|
manjaro에서 mariaDB를 시작할 수 없습니다. (0) | 2023.01.03 |
권장되는 Python 메모리 프로파일러는 무엇입니까? (0) | 2023.01.03 |
어레이 값이 존재하는지 확인하는 방법 (0) | 2023.01.03 |
온클릭 이벤트에서 여러 JavaScript 함수를 호출하려면 어떻게 해야 합니까? (0) | 2023.01.03 |