Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird [Order by]: alphanumerisch / numerisch (https://www.delphipraxis.net/135296-firebird-%5Border-%5D-alphanumerisch-numerisch.html)

erich.wanker 8. Jun 2009 17:15

Datenbank: Firebird • Version: 2.1.1 • Zugriff über: ZEOS Lib

Firebird [Order by]: alphanumerisch / numerisch
 
Hallo DP´ler..

Firebird2.1 - ZEOS - Delphi7 ...

Ein Feld:
Delphi-Quellcode:
"PERSONEN"   CHAR(30) CHARACTER SET ISO8859_1 COLLATE DE_DE,
..soll richtig sortiert werden, rauskommen tut aber:

Person 1
Person 10
Person 2
Person 20

ist es wirklich nicht möglich, das mit Firebird hinzubekommen?

ORDER BY CAST(PERSONENAS UNSIGNED) kennt er ja nicht ...

Vielen Dank

Erich

hoika 8. Jun 2009 17:24

Re: Firebird [Order by]: alphanumerisch / numerisch
 
Hallo,

das geht schon.
Allerdings muss das ganze Feld dann als Integer interpretiert werden können.

z.B.

SQL-Code:
order by cast(personalnr as integer)
Die Nummer muss also vom Namen getrennt werden.

Dann geht sowas

SQL-Code:
select Personalname || Personalnummer
From Personen
order by Personalname, cast(Personalnummer as integer)

Heiko

omata 8. Jun 2009 21:39

Re: Firebird [Order by]: alphanumerisch / numerisch
 
Vielleicht so...
SQL-Code:
CREATE PROCEDURE LEN (STR VARCHAR(100)) RETURNS (LEN INTEGER)
AS
DECLARE VARIABLE pat VARCHAR(100);
BEGIN
  len = 0;
  IF (str IS NOT NULL) THEN BEGIN
    pat = '';
    len = 0;
    WHILE (NOT str LIKE pat) DO BEGIN
      pat = pat || '_';
      len = len + 1;
    END
  END
  SUSPEND;
END
SQL-Code:
SELECT bez
FROM personen
ORDER BY (SELECT len FROM Len(bez)), bez


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz