CASE
제표
는 CASE 문에 대한 두 개의 구문있다
SYNTAX 1
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
SYNTAX 2
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
구문 하나에
설명 : 첫 번째 구문을 보려면
는 case_value는 표현이다. 이 값은 둘 중 하나가 같아지기 전까지 각 WHEN 절의 when_value 표현식과 비교됩니다. 동일한 when_value가 발견되면 해당하는 THEN 절인 statement_list가 실행됩니다. when_value가 같지 않으면 ELSE 절인 statement_list가 실행됩니다 (있는 경우).
이 구문은 NULL = NULL이 false이므로 NULL과 동일한지 테스트하는 데 사용할 수 없습니다. 구문 두번째
설명 : 제 구문 용
각 절 search_condition과 표현은 하나까지 평가 가리 그 THEN 대응 절 statement_list 실행되는 사실이다. search_condition이 같지 않으면 ELSE 절인 statement_list가 실행됩니다 (있는 경우).
when_value 또는 search_condition이 테스트 된 값과 일치하지 않고 CASE 문에 ELSE 절이 없으면 CASE 문에 대해 Case를 찾을 수 없습니다.
각 statement_list는 하나 이상의 SQL 문으로 구성됩니다. 빈 statement_list는 허용되지 않습니다.
WHEN 절에 의해 값이 일치하지 않는 상황을 처리하려면이 예제와 같이 빈 BEGIN ... END 블록을 포함하는 ELSE를 사용하십시오. 합니다 (ELSE 절 여기에 사용 된 들여 쓰기는 단지 명확성의 목적이고, 그렇지 않으면 중요하지 않습니다.)
DELIMITER |
CREATE PROCEDURE p()
BEGIN
DECLARE v INT DEFAULT 1;
CASE v
WHEN 2 THEN SELECT v;
WHEN 3 THEN SELECT 0;
ELSE
END;
END CASE;
END;
|
그리고 당신의 코드는이 같은 CASE 문을 사용하여 업데이트 할 수 있습니다 ..
UPDATE `crm_accounts` SET `reg` = CASE
WHEN age >= 17
AND age <= 35
AND balance > 0.00
AND type = "Júnior" THEN "Sim"
WHEN age >= 17
AND age <= 35
AND balance = 0.00
AND type = "Júnior" THEN "Não"
WHEN age >= 17
AND age <= 35
AND type = "Júnior" THEN "Efetivo"
ELSE `reg`
END
당신은 무엇을 시도 했습니까? 약간 독서 : http://stackoverflow.com/a/15745186/180100 –