Integer-division in MySQL
Ich habe eine MySQL-Tabelle, die eine product_id
Feld (big integer)
1102330008
1102330025
1102330070
1103010009
1103010010
1103020006
...
Möchte ich, um Zeilen auszuwählen, die product_id = 110301****
. Ich habe diese Abfrage:
SELECT * FROM `product` WHERE (product_id/10000)=110301
aber nicht wieder alle Werte, die mit dieser Meldung:
MySQL returned an empty result set (i.e. zero rows). ( Query took 0.0005 sec )
- Warum sind Sie mit division und nicht
BETWEEN
oder< >
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
MySQL-Dokumentation sagt, dass
LIKE
auch verwendet die Indizes, so denke ich, könnte man auch verwenden:edit: eigene Faust zu beheben Abfrage müssten Sie
FLOOR()
( Dokumentation ), denn es ergibt sich etwas wie:die Ergebnisse 110301,0006 und es ist nicht gleich
110301
LIKE '110301____'
zu vermeiden matching mit1103010
usw.LIKE
ing gegen numerische Felder.Verwenden Sie die
DIV
- operator.select -5 div 2, floor(-5 / 2);
erhalten Sie-2, -3
Wenn Sie möchten, erstellen Sie Ihre Abfrage in PHP, dann können Sie konstruieren Ihre Abfrage wie
Können Sie die MySQL Integer-division operator DIV wie diese:
Auch sicher für BIGINT.
MYSQL-Dokumentation, Ich denke,, erklärt, warum dies der Fall ist;
Also, wenn Sie konvertieren das Ergebnis in eine ganze Zahl, es kann funktionieren.
Edit:
Versuchen