2012-10-16 2 views
1

내부 경우 :나는 다음과 같은 쿼리있어 스위치 케이스 문

SELECT  ua.attribute_id, ma.attribute_name, ma.attribute_type, ma.attribute_default, ma.attribute_format, 
    (CASE ma.attribute_type 
     WHEN 0 THEN ua.attribute_default 
     WHEN 1 THEN ua.attribute_bool 
     WHEN 2 THEN ua.attribute_combo 
     WHEN 3 THEN ua.attribute_decimal 
     WHEN 4 THEN ua.attribute_integer 
     WHEN 5 THEN ua.attribute_decimal 
    END) AS attribute_value 
FROM  units_attributes AS ua 
LEFT JOIN models_attributes AS ma ON ma.attribute_id = ua.attribute_id 
WHERE  ua.unit_id = 1 

을 나는 attribute_value의 IF를 넣고 싶다. attribute_valueNULL 인 경우 ua.attribute_default을 사용하고 싶습니다.

나는 AS 후 IF 문을 사용하려고 시도했지만 작동하지 않습니다 ...

감사합니다.

답변

4

IF를 사용하는 대신 COALESCE()을 사용해보십시오. 매개 변수를 여러 개 사용하고 첫 번째 null이 아닌 값을 반환합니다.

COALESCE(attribute_value, ua.attribute_default) 
+0

고마워요! 매력처럼 일했습니다! 이 기능을 알지 못했습니다 ... 지금은 확실합니다! 그것을 기억할 것입니다. 10 분 안에 받아 들일 것으로 표시됩니다 (이전에는 할 수 없습니다). 고마워요! –

+0

문제가 없습니다. 다행 당신을 위해 일했다! – Travesty3

+0

비어있는 경우 비슷한 것이 있습니까? 나는 그것이 비어 있는지 확인해야 할 것 같아요. 그렇다면 NULL로 설정됩니다. & –