Hallo Froschpopo,
Vielleicht bin ich aber auch noch nicht auf das richtige Recherche-Keyword gestoßen.
Die richtigen Keywords wären type conversion rules mysql
gewesen ;-)
Testfeld VARCHAR(100) NULL
Testfeld: USUSSHDGIASGDAGDA
Hier nun eine Abfrage: SELECT Testfeld FROM Tabelle WHERE Testfeld = False
Ergebnis: USUSSHDGIASGDAGDA
Hehe, ja, MySQL mal wieder.
Das funktioniert nur mit Großbuchstaben.
Nein, das geht auch mit Kleinbuchstaben:
MariaDB [test]> select 'a' = false;
+-------------+
| 'a' = false |
+-------------+
| 1 |
+-------------+
1 row in set, 1 warning (0.00 sec)
WARUM?
Der Grund liegt in diesem Satz auf der Conversion Rules-Seite:
In all other cases, the arguments are compared as floating-point (real) numbers.
Keiner der vorher erwähnten Fälle trifft zu, also konvertiert MySQL alles nach Real und vergleicht dann. Und das ist:
MariaDB [test]> select cast('USUSSHDGIASGDAGDA' as double);
+-------------------------------------+
| cast('USUSSHDGIASGDAGDA' as double) |
+-------------------------------------+
| 0 |
+-------------------------------------+
1 row in set, 1 warning (0.00 sec)
MariaDB [test]> select cast(false as double);
+-----------------------+
| cast(false as double) |
+-----------------------+
| 0 |
+-----------------------+
1 row in set (0.00 sec)
Du hast dort also effektiv WHERE 0 = 0
stehen. Und ja, das ist bescheuert.
LG,
CK