Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Alternative für position() in Firebird? (https://www.delphipraxis.net/143609-alternative-fuer-position-firebird.html)

dust258 19. Nov 2009 07:54

Datenbank: FB • Version: 2.1 • Zugriff über: Standart-Komponenten

Alternative für position() in Firebird?
 
Guten Morgen Ihr Lieben,
ich habe mal wieder ein kleines Problem. Und zwar habe ich ein kleines Suchfeld gemacht mit dem ich eine ziemlich große Liste filtern kann. Das funktioniert auch ganz gut. Nur möchte ich jetzt das man auch mehrere Parameter in das Feld eingeben kann. Ich habe mir dafür folgenden Code ausgedacht:

SELECT * FROM BEDIENER
WHERE (position(Bediener in :cBediener) >0)

In CBediener könnte also z.B. "SYS, RR, BB" stehen.
Das funktioniert relativ gut (ich habe Probleme wenn in BEDIENER Leerzeichen hinter den Kürzeln kommen, aber das bekomme ich noch hin).

Nur habe ich jetzt hier gelesen das es die Funktion "position()" erst ab FB 2.1 verfügbar ist... Kennt Ihr noch eine Alternative in FB 1.5?

dust258 19. Nov 2009 08:29

Re: Alternative für position() in Firebird?
 
Habs schon gefunden: Das position() kann ich mir einfach sparen.

SELECT * FROM BEDIENER
WHERE (Bediener in (:cBediener))

Jetzt muss ich nur verhindern das bei BEDIENER die Nachkommastellen mit abgepfüft werden. Ist nämlich ein CHAR(5) Feld...

Edit: Das funktioniert doch nicht... Er findet bei mehreren Bedienern nichts... (SYS, RR)

Jürgen Thomas 19. Nov 2009 11:24

Re: Alternative für position() in Firebird?
 
Hallo,

ich wollte schon schreiben, dass IN falsch ist. Das erwartet nämlich eine Liste als Parameter, aber ein String ist keine Sammlung von Teilstrings.

Du kannst CONTAINING benutzen, siehe z.B. Wikibook: Einführung in SQL.

Allgemeiner Hinweis zu den Funktionen: Diese sind bis 2.0 als UDF (User-Defined Function) einzubinden. Es gibt sie in aller Regel schon sehr lange, aber nicht intern, sondern extern.

Gruß Jürgen


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 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