Ganzzahlige Division in MySQL

8

Ich habe eine MySQL-Tabelle mit einem product_id -Feld (große Ganzzahl)

  

1102330008   %Code%   %Code%   %Code%   %Code%   %Code%   ...

Ich möchte Zeilen mit 1102330025 auswählen. Ich habe versucht, diese Abfrage zu verwenden:

%Vor%

, aber es gibt keine Werte mit dieser Nachricht zurück:

  

1102330070

    
biji buji 29.06.2012, 14:05
quelle

6 Antworten

2

MySQL-Dokumentation sagt, dass LIKE auch Indizes verwendet, denke ich Sie könnten auch verwenden:

%Vor%

edit: Um Ihre eigene Abfrage zu korrigieren, müssten Sie FLOOR() ( Dokumentation ), weil es etwa so aussieht:

%Vor%

ergibt 110301,0006 und ist nicht gleich 110301

    
Teneff 29.06.2012, 14:11
quelle
15

Verwenden Sie den DIV -Operator .

%Vor%
  

Ganzzahlige Division. Ähnlich wie FLOOR (), ist aber sicher mit BIGINT-Werten. Falsche Ergebnisse können für nicht ganzzahlige Operanden auftreten, die den BIGINT-Bereich überschreiten.

    
djechlin 18.06.2013 15:23
quelle
8
%Vor%

Wenn Sie Ihre Abfrage in PHP erstellen möchten, können Sie Ihre Abfrage wie

konstruieren %Vor%     
biziclop 29.06.2012 14:08
quelle
3
%Vor%     
John Conde 29.06.2012 14:08
quelle
2

Sie können den MySQL-Integer-Divisionsoperator DIV so verwenden :

%Vor%

Auch sicher für BIGINT.

    
Perry 02.01.2013 22:34
quelle
1

MYSQL-Dokumentation , denke ich, erklärt, warum das passiert;

  

Eine Division wird nur dann mit BIGINT-Arithmetik berechnet, wenn sie in a ausgeführt wird   Kontext, in dem sein Ergebnis in eine ganze Zahl umgewandelt wird.

Wenn Sie also das Ergebnis in eine Ganzzahl konvertieren, funktioniert es möglicherweise.

Bearbeiten: Probieren Sie

aus %Vor%     
David Manheim 29.06.2012 14:55
quelle

Tags und Links