AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird [Order by]: alphanumerisch / numerisch
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird [Order by]: alphanumerisch / numerisch

Ein Thema von erich.wanker · begonnen am 8. Jun 2009 · letzter Beitrag vom 8. Jun 2009
Antwort Antwort
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
454 Beiträge
 
Delphi XE4 Professional
 
#1

Firebird [Order by]: alphanumerisch / numerisch

  Alt 8. Jun 2009, 17:15
Datenbank: Firebird • Version: 2.1.1 • Zugriff über: ZEOS Lib
Hallo DP´ler..

Firebird2.1 - ZEOS - Delphi7 ...

Ein Feld:
"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
Erich Wanker - for life:=1971 to lebensende do begin ..
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Firebird [Order by]: alphanumerisch / numerisch

  Alt 8. Jun 2009, 17:24
Hallo,

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

z.B.

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
Heiko
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Firebird [Order by]: alphanumerisch / numerisch

  Alt 8. Jun 2009, 21:39
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:51 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