2009-12-14 3 views
1
 
Is there any way to get the if statement to evaluate a query? 

SELECT if(5>0,'EQ_Type','*') FROM EQUIPMENT; 

Resulting in: 
+-----------------------+ 
| IF(5>0,'EQ_Type','*') | 
+-----------------------+ 
| EQ_Type    | 
| EQ_Type    | 
| EQ_Type    | 
| EQ_Type    | 
| EQ_Type    | 
| EQ_Type    | 
| EQ_Type    | 
| EQ_Type    | 
| EQ_Type    | 
+-----------------------+ 
9 rows in set (0.00 sec) 




I would like the above statement to be equivalent to the following: 

SELECT 'EQ_Type' FROM EQUIPMENT; 

And produce: 
+--------------+ 
| EQ_Type  | 
+--------------+ 
| ENGINE  | 
| ENGINE  | 
| ENGINE  | 
| TRAILER  | 
| TRAILER  | 
| TRAILER  | 
| WATER TENDER | 
| WATER TENDER | 
| WATER TENDER | 
+--------------+ 


Thanks for any help 

+0

Wont 5> 0은 항상 'true'가되므로 EQ_Type이됩니까? 내가 잘못 읽었을 수 있으므로 아주 잘 모르겠다. 이것은 단지 인위적인 예입니까? – GrayWizardx

답변

3

작은 따옴표 만 제거하면됩니다.

SELECT if(5>0,EQ_Type,'*') FROM EQUIPMENT; 
+0

고맙습니다. 나는 초심자이므로 뭔가 분명 할 것이라고 생각했다. –

1

나는 ANSI 표기법을 사용하는 것이 좋습니다 - CASE statements을이 경우에 - 대신 MySQL의 특정 구문보다 :

SELECT CASE WHEN 5 > 0 THEN t.eq_type ELSE '*' END 
    FROM EQUIPMENT t 

이유의 존재를, 당신은 데이터베이스를 변경 한 경우 -이 사항이 작업을 변경할 필요가 없습니다 것입니다 오라클, Postgres, SQL 서버 등