2009-12-14 8 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 aboutit toujours à 'true', d'où EQ_Type? Je ne connais pas très bien MySql donc je pourrais mal lire ça. Était-ce juste un exemple artificiel? – GrayWizardx

Répondre

3

Supprimez simplement les guillemets simples.

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

Merci monsieur. Je suis un novice alors j'ai pensé que ce serait quelque chose d'évident. –

1

Je recommande d'utiliser la notation ANSI - CASE statements dans ce cas - plutôt que MySQL syntaxe spécifique:

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

Raison d'être, si vous avez modifié les bases de données - cette déclaration ne serait pas nécessaire de modifier travailler sur Oracle, Postgres, SQL Server, etc.