AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

cast in query

Ein Thema von khh · begonnen am 15. Jul 2011 · letzter Beitrag vom 15. Jul 2011
Antwort Antwort
Seite 1 von 2  1 2      
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#1

cast in query

  Alt 15. Jul 2011, 09:15
Datenbank: firebird • Version: 2.1 • Zugriff über: zeos
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
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: cast in query

  Alt 15. Jul 2011, 09:18
Und wenn Du links mit Leerzeichen auffüllst (LPAD)?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#3

AW: cast in query

  Alt 15. Jul 2011, 09:21
leerzeichen?

du meinst in der Abfrage?
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

AW: cast in query

  Alt 15. Jul 2011, 09:23
Ja. Bei genügend Leerzeichen sollten theoretisch auch Zahlen korrekt sortiert werden.
Code:
-----1
---101
---102
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#5

AW: cast in query

  Alt 15. Jul 2011, 09:29
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
Karl-Heinz
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#6

AW: cast in query

  Alt 15. Jul 2011, 09:56
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
Karl-Heinz
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: cast in query

  Alt 15. Jul 2011, 10:36
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.
Gruß, Jo
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#8

AW: cast in query

  Alt 15. Jul 2011, 10:52
SQL-Code:
order by
  kunden_id, ''||LPAD(p.artnr, 20)
Alexander
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: cast in query

  Alt 15. Jul 2011, 11:04
Hier könnte eine eigene Collation helfen.
Markus Kinzler
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#10

AW: cast in query

  Alt 15. Jul 2011, 11:11
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
Karl-Heinz
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:42 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