Dasselbe Problem tritt auf, wenn eine Zeichenfolge in einen Integer-Typ umgewandelt wird.
%Vor%Wenn jedoch eine Zahl innerhalb der Zeichenfolge angegeben wird.
%Vor%Um das Problem zu beheben, verwenden Sie %code% für die Spalte, was auch dazu führt, dass der Textwert die Groß- / Kleinschreibung beachtet.
%Vor%Ich habe eine Tabelle namens %code% , die folgendermaßen aussieht:
Auf dem ich Abfrage wie folgt ausführen:
%Vor%Diese Abfrage ist nicht sinnvoll, weil %code% column% %code% type ist und ich in meiner Abfrage nach %code% value suche, aber %code% gibt immer noch keine leeren Zeilen zurück. Hier ist welche Abfrage zurückgegeben: Daher enthält %code% row in keiner der zurückgegebenen Zeilen %code% value. Wie kann das möglich sein?
"männlich" ist 0! Du erhältst also Aufzeichnungen, in denen das Alter 0 ist. Um wirklich zu verstehen, was gerade passiert, tu folgendes:
%Vor%Ihre dritte Spalte ist 1 für die Datensätze mit dem Alter "0" und "0" für die Datensätze mit einem Alter ungleich null.
Versuchen Sie diese einfache Abfrage:
%Vor% Das scheint keinen Sinn zu ergeben. Die Abfrage wird jedoch ausgeführt und gibt den Wert %code% zurück. Dies liegt an der
Das Gleiche passiert mit Ihrer Anfrage. %code% in %code% konvertiert im Vergleich zu einem Feld vom Typ %code% .
Das Problem hier ist, dass, wenn Sie versuchen, eine Zeichenfolge mit einer Ganzzahlspalte zu vergleichen, der Wert in den Datentyp der Spalte umgewandelt wird. Derselbe Fall wird mit float, big int, tiny int usw. auftreten.
Welcher Wert auch immer im Vergleich übergeben wird, wird zuerst von der mysql-Engine für diesen bestimmten Datentyp umgesetzt
Hier ist das Testergebnis der Abfrage, die wenige Werte ausgibt.
%Vor% %Vor%Das flt hat eine Spalte vom Typ float.
Ich habe eine Tabelle namens tabela1512823699024883
, die folgendermaßen aussieht:
Auf dem ich Abfrage wie folgt ausführen:
%Vor% Diese Abfrage ist nicht sinnvoll, weil age
column% int
type ist und ich in meiner Abfrage nach string
value suche, aber MySQL
gibt immer noch keine leeren Zeilen zurück. Hier ist welche Abfrage zurückgegeben:
Daher enthält age
row in keiner der zurückgegebenen Zeilen male
value. Wie kann das möglich sein?
Dasselbe Problem tritt auf, wenn eine Zeichenfolge in einen Integer-Typ umgewandelt wird.
%Vor%Wenn jedoch eine Zahl innerhalb der Zeichenfolge angegeben wird.
%Vor% Um das Problem zu beheben, verwenden Sie BINARY
für die Spalte, was auch dazu führt, dass der Textwert die Groß- / Kleinschreibung beachtet.
Versuchen Sie diese einfache Abfrage:
%Vor% Das scheint keinen Sinn zu ergeben. Die Abfrage wird jedoch ausgeführt und gibt den Wert 0
zurück. Dies liegt an der 'male'
wird in 0
konvertiert und dann zu 0
hinzugefügt. Daher wird 0
zurückgegeben.
Das Gleiche passiert mit Ihrer Anfrage. 'male'
in 0
konvertiert im Vergleich zu einem Feld vom Typ int
.
Das Problem hier ist, dass, wenn Sie versuchen, eine Zeichenfolge mit einer Ganzzahlspalte zu vergleichen, der Wert in den Datentyp der Spalte umgewandelt wird. Derselbe Fall wird mit float, big int, tiny int usw. auftreten.
Welcher Wert auch immer im Vergleich übergeben wird, wird zuerst von der mysql-Engine für diesen bestimmten Datentyp umgesetzt
Hier ist das Testergebnis der Abfrage, die wenige Werte ausgibt.
%Vor% %Vor%Das flt hat eine Spalte vom Typ float.