2016-12-13 2 views
0

Ich habe ein Problem mit einer Datenbankabfrage. Ich versuche, den Maximalwert einer Tabelle auszuwählen, aber die Tabelle enthält leider keine führenden Nullen. Die ID-Nummern im Feld sind gerade von 9999 auf 10000 gegangen, aber wenn ich versuche, MAX ('id') zu erhalten, gibt 9999 statt 10000 zurück. Ich nehme an, dieses Problem ist aufgrund der Tatsache, dass die 9999 nicht 09999 ist. Einige einfache googling scheint dieses Problem nicht zu beantworten, die meisten Ergebnisse, die ich bekomme sind, wie führende Nullen aus der SQL-Suche zu entfernen, nicht, wie behandelt Sie sind nicht da.MYSQLI Wählen Sie Max INT ohne führende Nullen

SELECT MAX(id) as MaxID FROM Orders 

Gibt es eine Möglichkeit, den Maximalwert auszuwählen, wenn keine Nullen an der Vorderkante vorhanden sind?

+0

Es ist sicherlich kein Problem, wenn es nicht ist eine führende Null, wenn der Datentyp eine Zahl ist. Welcher Datentyp ist Ihre Spalten-ID? – DZDomi

+1

(Wie ich unten kommentierte) Es kam mir nicht einmal in den Sinn zu überprüfen, wie das Feld eingestellt war, es wurde auf VarChar eingestellt, nachdem ... ... doh! Jetzt fühle ich mich dumm ... Alle anderen Instanzen in der Datenbank zu dieser Nummer an anderen Tabellen wurden auf INT gesetzt, also vermute ich, dass ich einfach INT angenommen habe. Setzen Sie es auf INT alles behoben. –

Antwort

0

Sie scheinen das Problem zu verstehen - das Speichern eines numerischen Werts als Zeichenfolge ändert die Sortierung der Werte.

Sie können in eine Zahl umwandeln, indem eine Null hinzugefügt:

SELECT MAX(id+0) as MaxID 
FROM Orders; 

Oder können Sie die maximale mit ORDER BY und LIMIT erhalten:

select o.* 
from orders o 
order by length(id) desc, id desc 
limit 1; 
+0

Es kam mir nicht einmal in den Sinn zu überprüfen, wie das Feld eingestellt war, es wurde auf VarChar gesetzt, nachdem es beendet war ... doh! Alle anderen Instanzen in der Datenbank zu dieser Nummer in anderen Tabellen wurden auf INT gesetzt, also habe ich einfach angenommen, dass es INT war. Setzen Sie es auf INT alles behoben. Danke für die schnelle Antwort. –

+1

Ich werde dies auf die richtige Antwort einstellen, sobald es mir in etwa 8 Minuten erlaubt. –

+0

"Sie können in eine Zahl umwandeln, indem Sie in eine Zahl umwandeln". Tautologie? – Barmar

Verwandte Themen