Ich möchte diesen Typ 1.1, 1.1.1, 1.1.2, 2.1, 2.1.1, 2.3, .. etc. so benutze ich Varchar Datentyp für diese Spalte Aber was passiert, ist es richtig bis 9.9.9 nach diesem 10.1.1 hier geschieht 1.1, 1.1.1, 1.1.2, 10.1.1, 2.1, 2.1 .1, ... usw. So habe ich auch DECIMAL versucht aber keine Ergebnisse.Sortierung eines "1.1.1" -Formattyps in Mysql
Antwort
Sie können Wert in drei verschiedene Spalten parsen, die in Ihrer Datenbank nicht benötigt werden, Anwendungscode wird es einfacher machen. Dann wird es so einfach wie
select ... order by col1, col2, col3
danke Kumpel .. !! –
Eine gute Idee wäre, Ihre Nummer als feste Größe, z.
- 1.1.1 => 001.001.001 (oder kurz 1001001)
- 1.1 => 1.001.000
- 9.9.9 => 9009009
So können Sie Ihre Variable als Nummer speichern. Beim Abrufen müssen Sie mit modulo spielen, um Ihre Nummer wieder auf string zu setzen. Die Haupteinschränkung wird sein, dass Sie entscheiden müssen, wie viele für jedes Segment verfügbar sind (in meinem Beispiel ist 999 das Maximum für jedes Segment. Diese Methode ist, wie ich die IP-Adresse speichern möchte (zB 192.168.1.1 wird zu 192168001001) .
Danke Buddy .. !! –
Versuchen:
SELECT
*
FROM
my_table
ORDER BY
CAST(SUBSTRING_INDEX(my_col, '.', 1) AS UNSIGNED) ASC,
CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(my_col, '.', -2), '.', 1) AS UNSIGNED) ASC,
CAST(SUBSTRING_INDEX(my_col, '.', -1) AS UNSIGNED) ASC
im Grunde ist es mit jedem Teil der Zeichenfolge, die durch Verwendung von links nach rechts
den teil~~POS=TRUNC jeden Teil des Strings, und sortiert die Reihen bekommt. Update: Die obige Abfrage funktioniert für genau 3 Nummern, aber wenn Sie w Ameise 4 Zahlen zu unterstützen, dann verwenden Sie diese Abfrage:
SELECT
*
FROM
my_table
ORDER BY
SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT(my_col, '.'), '.', 1), '.', -1) + 0
, SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT(my_col, '.'), '.', 2), '.', -1) + 0
, SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT(my_col, '.'), '.', 3), '.', -1) + 0
, SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT(my_col, '.'), '.', 4), '.', -1) + 0
Und wenn Sie wollen mehr Zahlen unterstützen, fügen Sie einfach die folgende: „XX“ mit der nächsten Nummer ersetzt:
, SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT(my_col, '.'), '.', XX), '.', -1) + 0
Credit Diese Antwort auf eine sehr ähnliche Frage: https://stackoverflow.com/a/17849200/2518200
Hallo Danke für die Antwort, die ich versucht habe, aber immer noch Sortieren wird nicht richtig Ergebnis. Ergebnis von oben Abfrage erhalten: 7.3.1.1, 7.3.1.2, 7.3.1.4, 7.3.2.2, 7.2.4, 12.2.1, 12.2 Ergebnis Wunsch 7.2.4, 7.3.1.1, 7.3.1.2 , 7.3.1.4, 7.3.2.2, 12.2, 12.2.1 –
@Jaineshshah Entschuldigung, diese Abfrage war für 3 Nummern. Da du bis zu 4 Nummern oder mehr hast, musste ich meine Antwort ändern. Bitte sehen Sie meine aktualisierte Antwort. Sie können diese neue Abfrage für jede Länge verwenden. –
- 1. Benutzerdefinierte Sortierung in MYSQL
- 2. Sortierung in MySQL/
- 3. Sortierung mehrerer Felder in MySQL
- 4. Case Sensitive Sortierung in MySQL
- 5. Moody's Bewertung Sortierung in Mysql
- 6. Mysql Sortierung sehr Schräge
- 7. Sortierung bei mysql
- 8. Benutzerdefinierte MySQL-Sortierung erstellen
- 9. MySQL Sortierung Nummer Ausgabe
- 10. mysql Rekord Sortierung Ausgabe
- 11. Mysql Spezielle Alternative Sortierung
- 12. PHP MySQL Fremdschlüssel Sortierung
- 13. MYSQL erweiterte Sortierung
- 14. Sortierung eines LinkedHashSet
- 15. Sortierung eines Struct Vektor
- 16. Sortierung eines Teilbaums in einer Verschlusstabelle hierarchische Datenstruktur
- 17. Sortierung MYSQL Volltextsuche nach Relevanz
- 18. Sortierung durch Werte PHP mysql
- 19. MySQL Abfrage mit komplexer Sortierung
- 20. php + mysql zwei Tabelle Sortierung
- 21. OOM Problem in Elasticsearch Cluster 1.1.1 Umgebung
- 22. MySQL Sortierung nach 2 Datensätze
- 23. Natürliche Sortierung mit nur MySQL
- 24. Mysql Natur in varchar Feld Sortierung
- 25. Wie Sortierung nach Unterabfrage in Mysql
- 26. Ist diese Sortierung möglich in MYSQL
- 27. Sortierung Gewohnheit in Winkel js
- 28. Mehrere MySQL-Ergebnisse aus PHP zusammenführen, dieselbe Sortierung/Sortierung verwenden
- 29. Sortierung eines Datenrahmens nach Index
- 30. Sortierung eines Arrays von NSIndexPfads
Zum Zeitpunkt der Einfügung in der db erstellen Sie eine weitere Spalte wie unique_id, die eindeutig sein und kann zum Sortieren zum Zeitpunkt des Abrufs verwendet werden. – Abhishekkumar
Als ein Hack können Sie INET_ATON und INET_NTOA verwenden – Strawberry
Siehe http://stackoverflow.com/questions/7508313/mysql-sorting-of-version-numbers und beachten Sie, dass alle Lösungen mit einer Funktion zum Sortieren des Ergebnisses nicht verwenden können ein Index, so dass es wahrscheinlich langsam ist. Wenn die Leistung kritisch ist, sollten Sie jeden Teil der Zeichenfolge als separate Spalten speichern, damit sie indiziert werden können. –