Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   C# [SQL] Select mit dynamischer Parameteranzahl (https://www.delphipraxis.net/129510-%5Bsql%5D-select-mit-dynamischer-parameteranzahl.html)

Reinhardtinho 20. Feb 2009 10:36

Datenbank: SQL Server 2000 • Zugriff über: SQL Skript

[SQL] Select mit dynamischer Parameteranzahl
 
Hi zusammen,

ich möchte eine SQL-Abfrage erstellen, bei der die Anzahl der Parameter noch nicht fest steht.

z.B. soll nach verschiedenen Namen gesucht werden.

SQL-Code:
SELECT Name
FROM Tabelle
WHERE Name like '%Meier%' or Name like '%Mueller%'
Wie kann ich eine solche Abfrage mit einer dynamischen Anzahl an zu suchenden Namen erstellen?

Vielen Dank für eure Hilfe
Lorenz

mkinzler 20. Feb 2009 10:37

Re: [SQL] Select mit dynamischer Parameteranzahl
 
Versuch es mal mit in

mquadrat 20. Feb 2009 10:41

Re: [SQL] Select mit dynamischer Parameteranzahl
 
@mkinzler
in und like funktionieren zusammen?

mkinzler 20. Feb 2009 10:43

Re: [SQL] Select mit dynamischer Parameteranzahl
 
Stimmt könnte schwer werden.
Dann bietet sich eigentlich nur eine SP an, welche die Abfrage dynamisch generiert.

Reinhardtinho 20. Feb 2009 10:45

Re: [SQL] Select mit dynamischer Parameteranzahl
 
Kannst du mit bitte einen Tipp geben, wie die SP aussehen kann?

nahpets 20. Feb 2009 10:45

Re: [SQL] Select mit dynamischer Parameteranzahl
 
Hallo,

in wird nicht funktionieren, da es keine Joker erlaubt.

Eine etwas "blöde" Variante könnte sein:

SQL-Code:
SELECT Name
FROM Tabelle
WHERE 1 = 2
Dieses SQL liefert natürlich kein Ergebnis aber:

Wenn Du nun hergehst und für jeden Namen ein OR anfügst, so bekommst Du ein gültiges SQL, dass Ergebnisse liefert und in der Zahl der zu suchenden Namen fast grenzenlos ist.

SQL-Code:
SELECT Name
FROM Tabelle
WHERE 1 = 2
OR Name like '%Meier%'
OR Name like '%Mueller%'
...
OR Name like '%Zeppelin%'

Reinhardtinho 20. Feb 2009 10:47

Re: [SQL] Select mit dynamischer Parameteranzahl
 
@nahpets:

Da sehe ich jetzt nicht, wie ich das mit dynamischen Parametern lösen könnte, dafür muss ich ja die Anzahl kennen.

mkinzler 20. Feb 2009 10:49

Re: [SQL] Select mit dynamischer Parameteranzahl
 
Zitat:

Zitat von Reinhardtinho
Kannst du mit bitte einen Tipp geben, wie die SP aussehen kann?

-du übergibst die Namen trennzeichengetrennt in einem String
-gehst durch diese Liste und fügst dann die entsprechende Bedingung ein

nahpets 20. Feb 2009 10:51

Re: [SQL] Select mit dynamischer Parameteranzahl
 
Hallo,
Zitat:

Zitat von Reinhardtinho
@nahpets:

Da sehe ich jetzt nicht, wie ich das mit dynamischen Parametern lösen könnte, dafür muss ich ja die Anzahl kennen.

Du musst dieses SQL zur Laufzeit um die OR-Zeilen erweitern, d. h. die gesamten OR's sind quasi ein einziger Parameter.
Leider weiß ich nicht, ob diese Verfahrensweise von jeder Datenbank unterstützt wird.

Jürgen Thomas 20. Feb 2009 11:17

Re: [SQL] Select mit dynamischer Parameteranzahl
 
Hallo,

von dem Vorgehen von nahpets #6 möchte ich abraten, weil dann der Vorteil von Parametern nicht genutzt werden kann. Alternativen werden in FIBPlus + IN () - ParamByName(..).As.. besprochen.

Vielleicht ist etwas davon eine sinnvolle Anregung.

Gruß Jürgen

Meine Güte, seid Ihr schnell.


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