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
에있는 경우 역할에 따라 다른 번호 로 필드 를 생성하려면 어떻게해야합니까? 이 예의 경우 "if user_role = 'Manager'then role_order = 5"입니다.
나는 남자에게 물고기 대답을 제공하는 대신 물고기 대답 하는 방법을 가르치는 사람을 찾고 있습니다.
CASE
switch 문과 비슷합니다. 사용할 수있는 두 가지 구문이 있습니다. 첫 번째는 원하는 비교 문을 사용할 수 있습니다.
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
I provided this answer because the other answer fails to mention that CASE
can function both as a statement and as an expression. The major difference between them is that the statement form ends with END CASE
and the expression form ends with just END
.
I wanted a simple example of the use of case that I could play with, this doesn't even need a table. This returns odd or even depending whether seconds is odd or even
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
'developer tip' 카테고리의 다른 글
격자 : 하나의 창에 여러 플롯이 있습니까? (0) | 2020.11.24 |
---|---|
.net MVC RadioButtonFor ()를 사용할 때 하나만 선택할 수 있도록 그룹화하는 방법은 무엇입니까? (0) | 2020.11.24 |
에라토스테네스의 체-소수 찾기 파이썬 (0) | 2020.11.24 |
numpy.matrix 또는 배열을 scipy 희소 행렬로 변환하는 방법 (0) | 2020.11.24 |
PDO PHP에서 쿼리 오류를 보는 방법 (0) | 2020.11.24 |