Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   cast in query (https://www.delphipraxis.net/161677-cast-query.html)

khh 15. Jul 2011 08:15

Datenbank: firebird • Version: 2.1 • Zugriff über: zeos

cast in query
 
hallo zusammen,
ich habe eine Query in der folgende klausel steht:
Code:
order by kunden_id , cast(p.artnr as integer)
das Feld p.artnr ist vom Type char.
Jetzt kann es leider vorkommen, dass in der artnr auch alphanumerische zeichen stehen
( Der Kund ist König)
wie krieg ich es hin, dass die Sortierung trotzdem funktioniert ?

ich danke euch

DeddyH 15. Jul 2011 08:18

AW: cast in query
 
Und wenn Du links mit Leerzeichen auffüllst (LPAD)?

khh 15. Jul 2011 08:21

AW: cast in query
 
leerzeichen?

du meinst in der Abfrage?

DeddyH 15. Jul 2011 08:23

AW: cast in query
 
Ja. Bei genügend Leerzeichen sollten theoretisch auch Zahlen korrekt sortiert werden.
Code:
-----1
---101
---102

khh 15. Jul 2011 08:29

AW: cast in query
 
Zitat:

Zitat von DeddyH (Beitrag 1111843)
Ja. Bei genügend Leerzeichen sollten theoretisch auch Zahlen korrekt sortiert werden.
Code:
-----1
---101
---102

ach so, du meinst gar nicht zu integer casten sondern gleich mit Leerzeichen auffüllen.
würde bedeuten, dass ich abhängig von der stringlänge der Artikenummern unterschiedlich viele leerzeichen davor setzen muss.
Das char feld ist 20 Zeichen gross

khh 15. Jul 2011 08:56

AW: cast in query
 
funktioniert leider nicht :-(

select artikelnummer from hwd_artikel
order by lpad(artikelnummer,20)

bringt die gleiche sortierung wie

order by artikelnummer

dagegen sortiert
cast(artikelnummer as integer) so wie es sein soll,

allerdings bekomme ich eben den Fehler bei alphanummerischen Zeichen :-(

jobo 15. Jul 2011 09:36

AW: cast in query
 
Du müsstest wohl nach Char konvertieren. Am besten gleich im Select selbst und dann noch einmal verschachteln.

SQL-Code:
select * from
( Select t.*, convert(t.int as Char) as OrderField from table t ) x order by ... x.Orderfield
Und das LPad noch rein.

alex517 15. Jul 2011 09:52

AW: cast in query
 
SQL-Code:
order by
  kunden_id, ''||LPAD(p.artnr, 20)

mkinzler 15. Jul 2011 10:04

AW: cast in query
 
Hier könnte eine eigene Collation helfen.

khh 15. Jul 2011 10:11

AW: cast in query
 
Zitat:

Zitat von jobo (Beitrag 1111858)
Du müsstest wohl nach Char konvertieren. Am besten gleich im Select selbst und dann noch einmal verschachteln.

SQL-Code:
select * from
( Select t.*, convert(t.int as Char) as OrderField from table t ) x order by ... x.Orderfield
Und das LPad noch rein.

warum nach char?

die artikelnummer ist doch char


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:27 Uhr.
Seite 1 von 2  1 2      

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