3 Stimmen

Abfrage, um ein Feld so zu sortieren, dass Zeichenketten an erster Stelle stehen und dann Zahlen

Ich habe eine Spalte, die Zahlen oder Zeichenketten enthält. Der Typ der Spalte ist varchar.

Wenn wir nach dem Zeichenfolgenfeld sortieren, kommen normalerweise erst alle Zahlen und dann die Zeichenfolgen. Ich will aber erst alle Zeichenfolgen und dann die Zahlen.

TIA!

1voto

Peter Punkte 26

Sie müssen es in zwei separaten Abfragen schreiben. Eine für die Auswahl von Zahlen, die andere für Zeichenketten. Vorzugsweise würde ich eine zweite Spalte erstellen (eine für Zahlen, eine für Zeichenketten), damit diese beiden Abfragen einfacher und schneller ausgeführt werden können.

0voto

st0le Punkte 32967

Das hat bei mir funktioniert...

Select * from Table order by stringfield+0;

bearbeiten: http://www.sqlite.org/datatypes.html (Punkt 4.0)

UPDATE: Versuchen Sie dies....

select * from Table where LENGTH(trim(stringfield,"0123456789 ") )=0 union select * from table order by stringfield;

0voto

Gordon Mckeown Punkte 710

Wie wäre es mit dem Folgenden (zwei Abfragen wie oben vorgeschlagen):

select * from Table where LENGTH(trim(stringfield,"0123456789 ")) > 0; select * from table where LENGTH(trim(stringfield,"0123456789 ")) = 0;

Die erste Auswahl sollte nur Werte zurückgeben, die nicht numerisch sind, während die zweite Auswahl nur Werte zurückgeben sollte, die numerisch sind.

Bei einer Tabelle, die eine Mischung aus numerischen und String-Daten enthält, werden zuerst die Strings und dann die Zahlen ausgegeben.

0voto

Björn Pollex Punkte 72424

Haben Sie erwogen, eine benutzerdefinierte Sortierfunktion ? Ich habe es selbst noch nie benutzt, aber es klingt nach genau dem, was Sie brauchen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X