2009-03-24 5 views

Antwort

6

Leer oder NULL? Da gibt es einen großen Unterschied. Wenn es NULL ist, können Sie die COALESCE() Funktion:

SELECT COALESCE(`MyColumn`, 'foo') As MyColumn FROM `MyTable` 

Wenn der Wert nur leer ist, müssen Sie etwas mehr wie dies tun:

SELECT IF(char_length(`MyColumn`)>0, `MyColumn`, 'foo') AS MyColumn FROM `MyTable 

Oder Sie sogar kombinieren können:

SELECT IF(char_length(COALESCE(`MyColumn`,''))>0,`MyColumn`,'foo') AS MyColumn FROM `MyTable` 
+0

aus irgendeinem Grund hat dies nicht tun: SELECT IDR kyy_FK, COALESCE (Team, 'Tag'), COALESCE (Name, 'xxxxx'), pojong, krd, COALESCE (Memo, 'foo') , aa \t VON rapsa GROUP VON krd, datetime ORDER BY 'rap''id' Ich bekomme Spalten mit dem Namen: COALESCE (Team, 'Tag') und leere Werte auf ihnen – Kaptah

+0

Wie ich schon sagte: Leer ist nicht das gleiche wie NULL. Coalesce benötigt NULL. Sie könnten versuchen, stattdessen die Funktion char_length() in Kombination mit IF zu verwenden. –

+0

Entschuldigung, habe ich vergessen zu antworten. Leer, nicht NULL. – Kaptah

3

verwenden Sie einfach "IFNULL":

SELECT IFNULL(col1,'foo') 
FROM mytable 
+0

aus irgendeinem Grund es nicht tun: SELECT IDR kyy_FK, IFNULL (Team , 'tag'), IFNULL (Name, 'xxxxx'), pojong, krd, IFNULL (Notiz, 'foo'), aa \t VON rapsa GROUP BY krd, datetime ORDER BY 'rap''id' i get Spalten wie folgt: IFNULL (Team, 'Tag') und leere Werte auf ihnen – Kaptah

2

Die COALESCE Anweisung gibt den ersten Nicht-Null-Parameter, dass es übergeben wird:

SELECT COALESCE(column,'foo') 

Returns column wenn es nicht null ist, 'foo' anders.