Alphanumerische Spaltensorierung

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

JazzJack

Alphanumerische Spaltensorierung

Beitrag von JazzJack » Mi, 10.05.2017 00:35

Hallo Leute,

ich weiß das scheint ein alter Hut zu sein, aber ich hab diverse SQL Befehle ausprobiert und nichts hat funktioniert, bitte helft mir.

Problem:

Ich hab folgende Spalte (als varchar);

A1
A10
A11
...
A2
A20
B1
B10

Und möchte sie in einem Tabellen-Steuerelement folgendermaßen sortieren:

A1
A2
A3
...
B1
B2
B3
...


Ich denke ich muss die Art des Inhaltes zu SQL-Befehl stellen und dann ein SELECT...ORDER BY... Befehl eintragen, aber ich weiß, dass nicht alle SQL Befehle hier funktionieren. Vielen Dank!!!


LG

JazzJack

nikki
******
Beiträge: 531
Registriert: Do, 05.03.2015 10:42

Re: Alphanumerische Spaltensorierung

Beitrag von nikki » Mi, 10.05.2017 21:07

Hallo,
bei alphanumerischen Werten ist A2 nun mal größer als A10 (es wird von links nach rechts sortiert). Du müsstest A2 schlicht und einfach durch A02 ersetzen.
Gruß

---------------------------------------------------------
Win.10 Prof. 64-bit, AOO 4.1.4, LO 5.4.7 (x64)

RobertG
*******
Beiträge: 1638
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Alphanumerische Spaltensorierung

Beitrag von RobertG » Mi, 10.05.2017 21:47

Hallo JazzJack,

ist natürlich etwas durch die Brust ins Auge, aber:

Code: Alles auswählen

SELECT "Text" FROM "Tabelle" ORDER BY LEFT("Text",1), CAST(RIGHT("Text",LENGTH("Text")-1) AS INTEGER)
Das nimmt an, dass nur zu Beginn ein Buchstabe steht. Nach diesem einen Buchstaben wird zuerst sortiert. Der Rest wird in eine Ganzzahl (INTEGER) umgewandelt und dann wird nach dieser Zahl sortiert.

"Text" ist das Feld mit Deinem A1, A12, A2 ...
"Tabelle" natürlich irgendwie der Tabellenname.

Gruß

Robert

JazzJack

Re: Alphanumerische Spaltensorierung

Beitrag von JazzJack » Mi, 10.05.2017 22:53

Danke für die Antworten. Letzteres habe ich getestet, mit folgendem Ergebnis:

Fehler-Code: 1

pq_driver: [PGRES_FATAL_ERROR]ERROR: invalid input syntax for integer: "L1"
(caused by statement 'SELECT "objekt_id", "strasse", "strassenkategorie", "hausnummer", "hausnummerzusatz 1", "hausnummerzusatz 2" FROM "geodatenbank"."LU_Objekte" "LU_Objekte" ORDER BY LEFT( "objekt_id", 1 ), CAST( RIGHT( "objekt_id", LENGTH( "objekt_id" ) - 1 ) AS INTEGER )')

RobertG
*******
Beiträge: 1638
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Alphanumerische Spaltensorierung

Beitrag von RobertG » Do, 11.05.2017 12:00

Hallo JazzJack,

das liegt daran, dass Deinem Post eine wesentliche Information fehlt. Es scheint, dass Du mit PostgreSQL arbeitest, nicht mit der internen Datenbank von Base, der HSQLDB. Für PostgreSQL habe ich nicht die Zeit, mir eine Testumgebung zusammen zu bauen.

Es kann natürlich auch sein, dass der Fehler darin liegt, dass Du Texte hast, die mit 2 Buchstaben anfangen. So könnte die Fehlermeldung auch zu deuten sein. Oder Du hast einen Text " L1" irgendwo stehen - mit führendem Leerzeichen.

Gruß

Robert

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste