ich eine Abfrage haben, die Tippfehler:MySQL Bug in Where-Klausel?
SELECT
SUM(qty)
AS
'aqty1'
FROM
po_details
WHERE
product_id ='1196'
AND
so_number = '1m';
es sein sollte:
SELECT
SUM(qty)
AS
'aqty1'
FROM
po_details
WHERE
product_id ='1196'
AND
so_number = '1';
Aber die erste falsche Abfrage, die so_number = '1m'
auf mysteriöse Weise haben richtig ausgibt, die gleiche Ausgabe wie die zweite richtige Abfrage tut , was nicht der Fall sein sollte, oder?
product_id
und so_number
Datentypen sind beide INT
. so_number = '1m'
sollte funktionieren, wenn der Datentyp so_number
VARCHAR
ist, da ich die 1m
in Anführungszeichen eingeschlossen habe, und die Bedingung war so_number LIKE '%1m%'
.
Warum funktioniert die obige Tippfehlerabfrage? Sollte nicht MySQL Fehler und sagt, dass es die 1m
nicht finden und es als 1
betrachten kann? Ist das ein bekannter Fehler? Ich benutze MySQL 5.6.14.
Hier ein Screenshot:
Zum Vergleich MySQL hat konvertieren ' '1m'' auf eine ganze Zahl: Sie können über das here lesen. Das Beste, was es tun kann, ist "1". –
Ah, also liest es nicht das Zeichen 'm', obwohl ich sie in Anführungszeichen eingeschlossen habe? – xjshiya
Anführungszeichen sind Zeichenfolgen, sie sind nicht dazu gedacht, Dinge zu gruppieren, wie bei Online-Suchen. Wenn MySQL die Zeichenkette ''1m'' in eine Ganzzahl umwandelt, die es zu vergleichen braucht, stoppt es, wenn es das nicht-numerische '' m'' findet, so dass es nur die Ganzzahl' 1' findet. –