MySQL에서 CASE..WHEN 구문을 사용하면 사용자가 여러 조건을 평가하고 해당 결과를 반환할 수 있습니다. 그러나 검색 조건 및 숫자 열과 함께 CASE를 사용하면 일반적인 문제가 발생합니다.
원래 쿼리 및 문제:
쿼리에서 CASE 문은 base_price를 평가합니다. base_price가 십진수(8,0)로 정의되는 열:
SELECT CASE course_enrollment_settings.base_price WHEN course_enrollment_settings.base_price = 0 THEN 1 ... ELSE 6 END AS 'calc_base_price', course_enrollment_settings.base_price FROM course_enrollment_settings WHERE course_enrollment_settings.base_price = 0;
이 결과 쿼리는 선택한 모든 행이 0인 예기치 않은 결과를 반환합니다. 여기서 base_price는 조건 3을 반환합니다.
3 0 3 0 3 0 3 0 3 0
해결책:
이 문제를 해결하려면 열 사양 CASE를 제거한 후에는 CASE의 두 번째 형식에서는 검색 조건을 사용하는 경우 CASE라는 단어 뒤에 열 이름이 필요하지 않습니다.
SELECT CASE WHEN course_enrollment_settings.base_price = 0 THEN 1 ... ELSE 6 END AS 'calc_base_price', course_enrollment_settings.base_price FROM course_enrollment_settings WHERE course_enrollment_settings.base_price = 0;
설명:
CASE에는 두 가지 다른 형식이 있습니다. 양식: 첫 번째 양식은 열 이름을 지정하지만 두 번째 양식은 그렇지 않습니다. 검색 조건을 평가할 때 두 번째 형식을 올바르게 사용하면 MySQL이 조건을 올바르게 평가하고 의도한 결과를 반환할 수 있습니다.
위 내용은 숫자 열 및 검색 조건을 사용하여 MySQL에서 CASE WHEN을 올바르게 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!