Matti Mäkitalo: Nicht den Wert sondern nur 1||0

Beitrag lesen

Hi,

In der Abfrage brauche ich alle Felder, bis auf eines der Felder(mediumblob): Hierzu soll die Abfrage im Ergebnis nur 1||0 liefern, je nachdem, ob da was drinsteht oder nicht (NULL).
SELECT IF(text,1,0) AS true_falseFROMtabelle;

Halte ich für unschön, da auf einmal der Leerstring als "false" evaluiert wird.
Beispiele:
mysql> SELECT IF ('', 1, 0);
+---------------+
| IF ('', 1, 0) |
+---------------+
|             0 |
+---------------+
1 row in set (0.00 sec)

mysql> SELECT IF ('0', 1, 0);
+----------------+
| IF ('0', 1, 0) |
+----------------+
|              0 |
+----------------+
1 row in set (0.00 sec)

mysql> SELECT IF(NULL, 1, 0);
+----------------+
| IF(NULL, 1, 0) |
+----------------+
|              0 |
+----------------+
1 row in set (0.00 sec)

mysql>

Ich nehme nicht an, dass die ersten beiden Beispiele so gewollt sind.

Wie dedlfix bereits sagte: der "IS NULL"-Operator ist gesucht.
SELECT textIS NULL AStrue_falseFROMtabelle;

(wers mag, darf natürlich gerne den ebenfalls erwähnten Control-Flow-Operator ergänzen:
SELECT IF(textIS NULL, 1, 0) AStrue_falseFROMtabelle;.
Ist aber hier unnötig).

Bis die Tage,
Matti