wahsaga: ENUM (mysql)

Beitrag lesen

hi,

Naja, der besagt, dass dieser error value den nummerischen wert 0 hat was aber nicht stimmt, denn ein select gibt keine 0 sondern einfach garnichts.

Schau dir das Beispiel im Manual an, mit ENUM('one', 'two', 'three').

Wenn du da einen Datensatz mit 'two' einträgst - dann liefert dir SELECT auch wieder 'two' zurück.
Trägst du einen ungültigen Wert ein, wird dieser durch einen Leerstring ersetzt. SELECTierst du diesen Datensatz, bekommst du eben diesen Leerstring zurück.

Erst wenn du den Inhalt einer ENUM-Spalte in einem Kontext benutzt, der einen nummerischen Wert erfordert - dann wird auch ein solcher geliefert.

SELECT enum_feld + 10 FROM tabelle
Das würde dir jetzt für deinen ungültigen Wert 10 liefern.

SELECT * FROM tabelle WHERE enum_feld = 2
Auch das kannst du machen, dann schränkst du die Auswahl auf die Datensätze ein, die den zweiten definierten Wert im ENUM-Feld stehen haben.

gruß,
wahsaga

--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }