AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQL Where mit Stringbereich
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Where mit Stringbereich

Ein Thema von waldforest · begonnen am 19. Aug 2015 · letzter Beitrag vom 19. Aug 2015
Antwort Antwort
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#1

SQL Where mit Stringbereich

  Alt 19. Aug 2015, 08:53
Datenbank: Firebird • Version: 2.5 • Zugriff über: zeos
Hallo,
ich möchte gerne eine Abfrage über einen Bereich von Strings durchführen.

z.B. beginnt eine Artikel-Inventarkürzel mit Buchstaben A - K, gefolgt von weiteren Chars.

Nun möchte ich z.B. alle Artikel mit Inventarkürzel AAB bis BAC auflisten. Hierzu gehören z.B. AAB2, AAB3, AAB4 .....

Aktuell habe ich versucht dies über
Delphi-Quellcode:
WHERE
     A.ART_INV >= '+QuotedStr(TRIM(edt_InvStart.Text)+'%')
AND A.ART_INV <=
'+QuotedStr(TRIM(edt_InvEnde.Text)+'%')
umzusetzten.
Allerdings werden die >= <= nicht berücksichtigt wenn z.B. nach
>= 'AA' und <= 'AA' zur Abfrage aller AA eingegeben wird, die Abfrage bleibt leer.
wenn die Abfrage
>= 'AA' und <= 'AD' erfolgt die Ausgabe aller AA, AB, AC allerdings ohne AD.

Was mach ich hier falsch ? warum funktioniert >= und <= nicht, wie kann man so etwas realisieren ?
mfg wf

Geändert von waldforest (19. Aug 2015 um 08:55 Uhr)
  Mit Zitat antworten Zitat
vagtler

Registriert seit: 9. Jul 2010
Ort: Köln
667 Beiträge
 
Delphi 2010 Professional
 
#2

AW: SQL Where mit Stringbereich

  Alt 19. Aug 2015, 08:59
ADxxxx ist größer als AD, demnach solltest Du nach < AE suchen.
  Mit Zitat antworten Zitat
Benutzerbild von rapante
rapante

Registriert seit: 3. Jun 2009
Ort: OPR
172 Beiträge
 
Delphi 12 Athens
 
#3

AW: SQL Where mit Stringbereich

  Alt 19. Aug 2015, 09:12
Versuche es mal so:

Code:
WHERE
  (SUBSTR(A.ART_INV from 1 for 2) >= 'AA') AND
  (SUBSTR(A.ART_INV from 1 for 2) <= 'AD')
Micha
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

AW: SQL Where mit Stringbereich

  Alt 19. Aug 2015, 12:25
Hallo,

das '%' in Deiner Bedingung dürfte zu Irritationen führen, es dient als Platzhalter für beliebige Zeichenfolgen beim Like, aber nicht bei Vergleichen mit <= oder >=.

eventuell könnte aus auch so gehen:
Code:
'WHERE A.ART_INV >= ' + QuotedStr(TRIM(edt_InvStart.Text)
+ 'AND A.ART_INV <= ' + QuotedStr(TRIM(edt_InvEnde.Text) + 'z')
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: SQL Where mit Stringbereich

  Alt 19. Aug 2015, 12:41
eventuell könnte aus auch so gehen:
Code:
'WHERE A.ART_INV >= ' + QuotedStr(TRIM(edt_InvStart.Text)
+ 'AND A.ART_INV <= ' + QuotedStr(TRIM(edt_InvEnde.Text) + 'z')
Dann würden Alle Nummern mit AAz00... ebenfalss hinten herunter fallen!
wie wäre es mit
Code:
maxwert:=TRIM(edt_InvEnde.Text);
maxwert[length(maxwert)]:=succ(maxwert[length(maxwert)]);
'WHERE A.ART_INV >= ' + QuotedStr(TRIM(edt_InvStart.Text)
+ 'AND A.ART_INV <= ' + QuotedStr(maxwert)
(sofern succ überhaupt mit char umgehen kann).

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: SQL Where mit Stringbereich

  Alt 19. Aug 2015, 12:48
Anstelle von 'z' müsste ein Wert stehen, der größer als alles Andere, was da so vorkommen kann, ist.

Oder anders formuliert:
Code:
QuotedStr(TRIM(edt_InvEnde.Text) + 'z')
müsste, Aufgrund des Vergleiches mit '<=' den größtmöglichen Wert von
Code:
A.ART_INV
für den konkreten Vergleich repräsentieren.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#7

AW: SQL Where mit Stringbereich

  Alt 19. Aug 2015, 09:09
AAD123 ist größer als AAD, daher kommt nix bei Wert<=AAD.
Du musst also die nur die ersten 3 Zeichen von Wert angucken:

Substr(Wert,1,3)<=AAD usw. wobei Substr ist Oracle, keine Ahnung wie das bei deinem DBMS heißt.
Ralph
  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 01:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz