Ist es möglich, Text innerhalb einer MySQL-Abfrage in Zahlen umzuwandeln? Ich habe eine Spalte mit einer Kennung, die aus einem Namen und einer Nummer im Format "Name-Nummer" besteht. Die Spalte hat den Typ VARCHAR. Ich möchte die Zeilen nach der Nummer sortieren (Zeilen mit demselben Namen), aber die Spalte ist nach der Reihenfolge der Zeichen sortiert, d. H.
name-1
name-11
name-12
name-2
Wenn ich die Zahl abschneide, kann ich die 'varchar'-Zahl in die' echte 'Zahl umwandeln und damit die Zeilen sortieren? Ich möchte folgende Bestellung erhalten.
name-1
name-2
name-11
name-12
Ich kann die Nummer nicht als separate Spalte darstellen.
bearbeitet 2011-05-11 9:32
Ich habe folgende Lösung gefunden ... ORDER BY column * 1
. Wenn der Name keine Zahlen enthält, ist es dann sicher, diese Lösung zu verwenden?
name
kann eine beliebige Folge von Buchstaben sein.Antworten:
Das sollte funktionieren:
quelle
Sie können verwenden
SUBSTRING
undCONVERT
:Wo
name_column
ist die Spalte mit den "name-" Werten. DasSUBSTRING
entfernt alles vor dem sechsten Zeichen (dh das Präfix "name-") undCONVERT
konvertiert dann das übrig gebliebene in eine echte Ganzzahl.UPDATE : Angesichts der sich ändernden Umstände in den Kommentaren (dh das Präfix kann alles sein) müssen Sie ein
LOCATE
in die Mischung werfen :Dies setzt natürlich voraus, dass das nicht numerische Präfix keine Bindestriche enthält, aber der entsprechende Kommentar besagt Folgendes:
Das sollte also eine sichere Annahme sein.
quelle
SUBSTRING(name_column, 6)
. Ich weiß, du hast es gepostet, als er uns das nicht erzählt hat ...Verwenden Sie einfach CAST,
Der Typ für das Cast-Ergebnis kann einer der folgenden Werte sein:
quelle
Mit CAST () können Sie von string nach int konvertieren. z.B
SELECT CAST('123' AS INTEGER);
quelle
SELECT CAST('123' AS SIGNED INTEGER);
oderSELECT CAST('123' AS UNSIGNED INTEGER);
zum Laufen bringen.quelle
Ein einfacher Weg SELECT '123' + 0
quelle
Um die Nummer zu erhalten, versuchen Sie es mit
SUBSTRING_INDEX(field, '-', 1)
konvertieren.quelle
Wenn Ihr Primärschlüssel eine Zeichenfolge in einem Format wie
ABC / EFG / EE / 13/123 (Sequenznummer) ist, kann
diese Art von Zeichenfolge problemlos zum Sortieren mit dem Trennzeichen ("/") verwendet werden.
Mit der folgenden Abfrage können wir eine Tabelle mit diesem Schlüsseltyp bestellen
quelle
quelle
Eine generische Methode:
quelle