2016-07-25 6 views
2

Ich habe eine Tabelle, lassen Sie uns die Einfachheit nennen Plant, mit drei Spalten: id, name, category.
Dies ist die am meisten vereinfachten Beispiel, so sorgen Sie sich nicht um die Normalisierung ...Mapping von Werten in SQL select?

+-------+--------+------------+ 
| id | name | category | 
+-------+--------+------------+ 
| 1  | orange | fruits  | 
| 2  | banana | fruits  | 
| 3  | tomato | vegetables | 
| 4  | kaokao | NULL  | 
+-------+--------+------------+ 

Wenn eine Abfrage haben wollen, die zurückgibt:

  • 'Fruit Plant' anstelle von 'fruits'
  • 'Vegetable Plant' anstelle von 'vegetables'
  • 'unknown' statt NULL s

So sollte die Rückkehr sein:

+-------+--------+-----------------+ 
| id | name | category  | 
+-------+--------+-----------------+ 
| 1  | orange | Fruit Plant  | 
| 2  | banana | Fruit Plant  | 
| 3  | tomato | Vegetable Plant | 
| 4  | kaokao | unknown   | 
+-------+--------+-----------------+ 

Wie kann ich diese Zuordnung für ausgewählte Werte zu tun?

ich mysql verwende, wenn dies eine besondere hat IF Schlüsselwort/Funktion in mysql

Antwort

10

Sie case Ausdruck verwenden:

select 
    id, 
    name, 
    case 
     when category = 'fruits' then 'Fruit Plant' 
     when category = 'vegetables' then 'Vegetable Plant' 
     when category is null then 'unknown' 
    end as category 
from Plant 
+0

Dank Ich wusste nicht, dass es in mysql einen Fallblock gibt. Wie kann ich einen Standard für alle anderen Werte außer Obst und Gemüse und Nullen einstellen? –

+2

@ AshrafBashir. . . Verwende 'else'. –

0

Verwendung case Funktion (mit else Anweisung):

SELECT id, name, 
CASE category 
WHEN 'vegetables' THEN 'Vegetable Plant' 
WHEN 'fruits' THEN 'Fruit Plant' 
WHEN IS NULL THEN 'unknown' 
ELSE 'default values' 
END 
FROM Plant 
0

Versuchen Sie es:

SELECT 
    `id`, 
    `name`, 
    CASE 
    WHEN `category` = 'fruits' THEN 'Fruit Plant' 
    WHEN `category` = 'vegetables' THEN 'Vegetable Plant' 
    WHEN `category` = NULL THEN 'unknown' 
    ELSE `category` 
    END 
    AS `category` 
FROM `Plant` 
+0

Kein Wert jedes "gleich" null in SQL. Es ist "NULL" oder es ist "=" etwas, das nicht null ist. Ein Nullwert bedeutet einen Mangel an einem Wert, und Sie können nichts mit nichts oder gar nichts zu nichts gleichsetzen. – Jason