SQL Zahlen u. Wörter unterschiedl. Länge sortieren

Hallo
habe ein Problem bei einer Abfrage mit VisualBasic.
Im Moment habe ich ja schon den Hinweis dafür bekommen, daß

  • ich Zahlen bis 2000000 mit Order By CLNG („Feld“) sortieren kann
  • Wörter einfach mit Order By („Feld“) sortieren kann

Problem nun folgendes, wenn meine Zahlen auch „Wörter“ sind, funktioniert diese Sortierung nur teilweise, weil hier nach 1, 10 kommt und nicht 2 usw.
Wenn ich eine Kombination aus Wörtern und Zahlen habe bekomme ich eine Fehlermeldung abhängig von der SQL-Zeile
Sind diese Wörter unterschiedlicher Länge gibts auch Probleme

Ich bräuchte eine saubere Sortierung einer Spalte, welche aus Textfelden besteht und alle möglichen Zahlen, Wort oder beides enthalten kann.

Beispiel in einer Spalte (alles Textwerte) stehen folgende Werte:

1
200N
2
Lukas
10
Detlef
2000
hugo
13654

Normalerweise sollten dann die Sortierung

1
2
10
2000
13654
200N
Detlef
hugo
Lukas

ergeben.

Wie kriege ich das hin??? Wer kennt sich da genauer aus.

Mfg Werner

Hi Werner,

das geht nicht. Eine Spalte hat einen Datentyp, der kann numerisch sein oder alphanumerisch, aber nicht beides. Das Sortierverfahren kennt den Datentyp und verhält sich genau nach Vorschrift.

Nimm doch mal eine Handvoll Werte und versuche, sie in Excel zu sortieren. Was da nicht geht, geht in der Datenbank auch nicht.

Gruß Ralf

Hallo,

wie wäre es, wenn man zuerst zwei „Unterabfragen“ bildet, in denen man jeweis Text und Zahl mit

WHERE IsNumeric(Feldname) = True bzw. False

voneinander trennt und dann mit einer UNION-Abfrage geordnet wieder zusammensetzt. Das läßt sich auch in einen SQL-Ausdruck pressen, aber dafür bin ich jetzt zu müde :wink:

ujk

Hi,

…und dann mit einer UNION-Abfrage geordnet wieder zusammensetzt.

nützt nix, nützt gaaar nix - den Sort gibt’s ja wieder nur auf die Vereinigungsmenge.

Gruß Ralf

Hallo,

stimmt.

Noch zwei Gedanken:

Die beiden Unterabfragen sortieren und die UNION-Abfrage unsortiert ausgeben? Kommen dann die beiden Datenblöcke in sich sortiert hintereinander weg?

oder ein Ja/Nein-Feld an die Tabelle anhängen und per Aktualisierungsabfrage für die numerischen Werte auf True setzen (oder umgekehrt) und die UNION-Abfrage zuerst nach dem Ja/Nein-Feld und dann nach dem anderen Kriterium sortieren?

ujk

Hi ihr müden Männer

ich habe den hinweis bekommen, einfach nullen vor die Zahl zu setzen und dann Order By zu verwenden.
Das wird wohl die einzige vernünftige Lösung sein.

Schade eigentlich, das es bei Officeprogrammen nicht einmal dazu reicht eine Sortierung richtig zu machen.

Mfg Werner

Hi Werner,

ich habe den hinweis bekommen, einfach nullen vor die Zahl zu
setzen und dann Order By zu verwenden.

den Tipp kannst Du dem Spender um die Ohren schlagen. Natürlich kannst Du alle Zahlen mit führenden Nullen auffüllen - aber was machst Du mit 200N? Ist das größer als 200NA? Was soll bei 200NA166ZX passieren?

Schade eigentlich, das es bei Officeprogrammen nicht einmal
dazu reicht eine Sortierung richtig zu machen.

Ohne Dir zu nahe treten zu wollen: Hier kann Office wirklich nichts dafür, und die meisten Fehler passieren zwischen dem linken und dem rechten Ohr. Beschreibe einem Programmierer widerspruchsfrei , wie Du sortieren möchtest, und er wird Dir die Funktion bauen.

Gruß Ralf

1 Like