Firebird bestimmen, ob eine Zeichenfolge alle Zahlen
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?
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);