wahsaga: Mehrere gecheckte Boxen in ein Datenbankfeld

Beitrag lesen

hi,

Du solltest vermeiden, numerische ENUM- oder SET-Listen aufzubauen, da MySQL hier immer noch einen Bug hat (ich empfinde das Verhalten jedenfalls als solchen). Wenn man nämlich einen Wert anspricht, der nicht in der Liste enthalten ist, der aber im Index-Bereich der Liste liegt, dann nimmt MySQL einfach den Index anstelle des Wertes und hat damit mit ziemlicher Sicherheit einen falschen Wert angesprochen.

das würde ich nicht als bug sehen.
ENUM und SET gehören laut manual zu den zeichenketten-typen, also würde ich erwarten, dass du einen nur aus ziffern bestehenden wert darin trotzdem mit '1' ansprichst, und nicht mit 1.

das verhalten, wenn du wirklich einen nummerischen wert benutzt, ist m.E. auch klar definiert:

Wenn Sie eine ENUM in einem numerischen Zusammenhang benutzen, wird der Index des Spaltenwerts zurückgegeben. Sie können beispielsweise numerische Werte aus einer ENUM-Spalte wie folgt abrufen:

mysql> SELECT enum_spalte+0 FROM tabelle;

Wenn Sie eine Zahl in eine ENUM speichern, wird die Zahl als Index behandelt und der gespeicherte Wert ist das Aufzählungselement mit diesem Index.

gruß,
wahsaga

--
"Look, that's why there's rules, understand? So that you _think_ before you break 'em."