Frage

Ich habe ein VARCHAR-Feld in einer Firebird 2.0 Tabelle, die alphanumerische Zeichen enthalten. Ich muss die Daten auf diesem Feld sortieren, alle Werte Sortierung, die nur Zahlen als Zahlen enthalten, und sortieren alle anderen Werte als 0

Zum Beispiel, wenn ich vier Werte haben,

"1", "2", "10", "string", 

Ich brauche es als

sortieren
"string", "1", "2", "10". 

Standardsortierung mit String-Sorten wie

"1", "10", "2", "string".

Ich dachte an die Werte zu INTEGER Casting, aber ich bin immer Konvertierungsfehler auf Strings, was natürlich richtig ist. Wie dies umgehen?

War es hilfreich?

Lösung

Sie können die eingebaute Funktion LPAD verwenden:

SELECT
  ...
  <number_field>,
  ...
FROM
  ...
ORDER BY
  LPAD(<numer_field>, 10)

Andere Tipps

Erstellen Sie zusätzliche Spalte, wo Sie sortierbar Werte speichern Sie Ihre Anwendung. Dann tut Sortierung basierend auf dieser Spalte. Wenn Sie Ihre Zahlen am Ende sein wollen, dann legen Sie „ZZZ“ (oder „uuu“ oder was auch immer ist letztes Zeichen in Ihrer Sprache) vor Zahlen. Wie Format ( "ZZZ% 012d", my_num);

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top