php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.07.2008, 10:57  
Erfahrener Benutzer
 
Registriert seit: 14.01.2006
Beiträge: 111
moose
Standard [gelöst] Zahlen sortieren mit Varchar

Hi,

ich habe ein Feld vom Varchar-Typ und muss die Datensätze sortieren. Jedoch bestehen einige Datensätze nur als zahlen und wenn ich einfach mit "ORDER BY cat" die Datensätze sortiere bekomme ich z.B. folgende Reihenfolge:

1
12
13
14
15
2
20
21

ich weis dass das am Varchar-Typ liegt, aber natürlich will ich die wie int sortieren:

1
2
12
13
14
15
20
21

Kann mir jemand falls es nicht mit SQL geht eine Methode für PHP sagen?
Mit PHP müsste man via Regex die Zahlen vom Text trennen, die größe der zahlen vergleichen und dann eben ordnen.
__________________
http://www.martin-thoma.de
moose ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.07.2008, 11:02  
¯\_(ツ)_/¯
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.814
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Mit MySQL ist es mir insofern nicht bekannt da es ja extra den Datentyp int gibt der dann richtig sortiert wird.

In PHP kannst du die Methode sort Anwenden und im 2ten Parameter einstellen wie sortiert werden soll. Wenn du allerdings nicht nur int-Werte sondern auch Buchstaben dabei hast dann wird das wohl nicht direkt was. Dann solltest du eher die Zahlen und die Buchstaben einzeln sortieren und aneinander hängen.
__________________
▇█▓▒░◕‿‿◕░▒▓█▇
Flor1an ist offline   Mit Zitat antworten
Alt 17.07.2008, 11:06  
Erfahrener Benutzer
 
Registriert seit: 14.01.2006
Beiträge: 111
moose
Standard

also ich hab gerade folgendes gefunden:
ORDER BY SUBSTR(col, 1, 1), TO_NUMBER(SUBSTR(col, 2, LENGTH(col)));
wobei das ja nicht klappt da die buchstabenlänge variiert. das was ich will scheint sich alphanummerische sortierung zu nennen.

Zitat:
Mit MySQL ist es mir insofern nicht bekannt da es ja extra den Datentyp int gibt der dann richtig sortiert wird.
Ja, jedoch geht das nicht da ich ja auch text brauche. Die einzige Möglichkeit, die mir gerade einfällt ist das hinzufügen einer neuen Spalte in der nur Zahlen rein kommen. In die Erste würde dann Text + Zahlen hinein kommen. Ein PHP-Script würde den reinen Zahlenteil am Ende isolieren und in der zweiten Spalte speichern.
__________________
http://www.martin-thoma.de
moose ist offline   Mit Zitat antworten
Alt 17.07.2008, 11:15  
¯\_(ツ)_/¯
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.814
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Wofür hast du überhaupt in einer Spalte Zahlen und Text und dies musst du dann auch noch sortieren.
__________________
▇█▓▒░◕‿‿◕░▒▓█▇
Flor1an ist offline   Mit Zitat antworten
Alt 17.07.2008, 11:46  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

ORDER BY LPAD(inhalt,8,'0')

wobei du die 8 hier gegen die länge deines Feldes tauschen solltest
cycap ist offline   Mit Zitat antworten
Alt 21.07.2008, 08:46  
Erfahrener Benutzer
 
Registriert seit: 14.01.2006
Beiträge: 111
moose
Standard

vielen dank cycap, folgende lösung funktioniert wunderbar:

Zitat:
ORDER BY LPAD(spaltenname,8,'0')
__________________
http://www.martin-thoma.de
moose ist offline   Mit Zitat antworten
Alt 21.07.2008, 13:35  
Erfahrener Benutzer
 
Registriert seit: 13.05.2006
Beiträge: 434
Curanai ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Man lernt ja nie aus ... aber geht das nicht auch?

Code:
ORDER BY LPAD(inhalt, LENGTH(inhalt), '0')
__________________
Manche Menschen sind wie Schnitzel - nicht zäh, aber beidseitig bekloppt!
Curanai ist offline   Mit Zitat antworten
Alt 21.07.2008, 13:47  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

LENGTH liefert die länge des Strings in inhalt und nicht die länge der Spalte
cycap ist offline   Mit Zitat antworten
Alt 21.07.2008, 13:53  
Erfahrener Benutzer
 
Registriert seit: 13.05.2006
Beiträge: 434
Curanai ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Jupp, hatte ich mir fast gedacht ... ok ... merci!
__________________
Manche Menschen sind wie Schnitzel - nicht zäh, aber beidseitig bekloppt!
Curanai ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Zahlen Sortieren robydog Datenbanken 2 17.04.2008 19:28
MYSQL Datenbank sortieren, nach PHP Variablen ArtAndLife PHP Tipps 2008 4 11.04.2008 10:45
Zahlen (Double) formatiert darstellen Marie PHP Tipps 2007 2 24.01.2007 22:32
Zahlen zusammenzählen Sonja PHP Tipps 2006 11 28.03.2006 11:07
Anfänger...varchar funktioniert nur mit Zahlen imported_kontur Datenbanken 6 31.01.2006 12:54
Daten nach Zahlen sortieren LordAvalon Datenbanken 10 12.12.2005 13:05
[Erledigt] MySQL - Tabelle - Typ wichtig? (VARCHAR, TEXT) Datenbanken 9 15.07.2005 00:09
3 Zahlen nach größe sortieren PHP Tipps 2005-2 2 02.07.2005 17:24
komma getrennte werte sortieren und zählen Schiedsrichter PHP Tipps 2005 10 09.03.2005 15:56
[Erledigt] Zählen und sortieren Datenbanken 4 14.01.2005 20:45
5 assosiative arrays gleichzeitig sortieren PHP Tipps 2004-2 2 13.12.2004 14:07
Tabellen nach Zahlen sortieren Datenbanken 2 29.11.2004 00:03
Arrays nachträglich (Inhalte) zählen und sortieren Gumfuzi PHP Tipps 2004-2 3 20.11.2004 00:00
Tabelle wird nicht erzeugt. Warum? PHP-Fortgeschrittene 3 21.09.2004 19:05
[Erledigt] Alphabetisch sortieren PHP Tipps 2004 17 15.07.2004 23:15

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql zahlen sortieren, mysql order by varchar, varchar zahlen, varchar zahlen sortieren, varchar sortieren, http://www.php.de/datenbanken/46183-geloest-zahlen-sortieren-mit-varchar.html, mysql text als zahl sortieren, php zahlen richtig sortieren, sql order by varchar, mysql sortierung zahlen, php zahlen sortieren, mysql sortieren zahlen, mysql varchar order by, mysql sortierung varchar, mysql order by zahlen varchar, varchar, mysql varchar zahlenwert, varchar sortierung, mysql sortieren varchar, mysql nach zahlen sortieren

Alle Zeitangaben in WEZ +1. Es ist jetzt 13:00 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.