Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL: Concat in WHERE-Klausel? (https://www.delphipraxis.net/111577-sql-concat-where-klausel.html)

Chaoten-Joe 5. Apr 2008 20:02


SQL: Concat in WHERE-Klausel?
 
Hallo zusammen,

habe folgendes Probleme: Ich möchte via SQL aus einer Tabelle mit Adressen die eMail-Adressen raussuchen. In der Tabelle gibt es u.a. folgende Felder:
- eMail1
- eMail2
- Vorname
- Name

Im Vorfeld liegt mit ein Name in Form von "Vorname Name" vor, zu dem die entsprechenden eMail-Adressen aus der Tabelle herausgesucht werden müssen. Leider funktioniert folgender Code irgendwie nicht:

Delphi-Quellcode:
'SELECT EMail1, EMail2 FROM Adressen WHERE CONCAT(Vorname,'+QuotedStr(' ')+',Name) = '+QuotedStr(Person.AsString);
Hat jemand ne Idee?
Im Forum seht zwar ne Menge zu Concat ... hat aber alles irgenwie nicht geholfen ...

Vielen Dank vorab!

Christian

Hansa 5. Apr 2008 20:15

Re: SQL: Concat in WHERE-Klausel?
 
So geht das :

SQL-Code:
select nr||namefrom Adresse as test
Wie üblich dann eben Dataset anlegen und auf Test zugreifen.

Chaoten-Joe 5. Apr 2008 21:52

Re: SQL: Concat in WHERE-Klausel?
 
Also zwei Abfragen nacheinander?
Oder kann man das auch in einer verpacken?

omata 5. Apr 2008 21:54

Re: SQL: Concat in WHERE-Klausel?
 
Das sind keine zwei Anweisungen, die || sind ein einfaches CONCAT.

Wobei das wohl er so aussehen sollte...
SQL-Code:
SELECT nr||namefrom AS test
FROM adresse
Welche Datenbank benutzt du eigentlich?

Zeichenketten miteinander verbinden...
MySQL: CONCAT
MSSQL: +
Firebird: ||

marabu 5. Apr 2008 22:03

Re: SQL: Concat in WHERE-Klausel?
 
Hallo,

welcher Operator für die string concatenation verwendet werden kann, ist vom RDBMS abhängig. Die Funktion CONCAT() deutet für mich auf MySQL hin und ist dann syntaktisch korrekt aufgebaut. Was geht denn damit "irgendwie nicht"? Sind die Felder Vorname und Name mit NOT NULL definiert worden? Wenn nicht müssen Vorkehrungen getroffen werden, damit das Verkettungsergebnis nicht NULL wird.

Gute Nacht

Chaoten-Joe 5. Apr 2008 22:04

Re: SQL: Concat in WHERE-Klausel?
 
Funktioniert:

Delphi-Quellcode:
'SELECT vorname|| '+QuotedStr(' ')+ ' || name, eMail1, eMail2 
FROM Adressen
WHERE ((eMail1 is NOT NULL) or (eMail2 is NOT NULL)) and ((vorname|| '+QuotedStr(' ')+ ' || name) = '+QuotedStr(Person.AsString)+')'
Danke!

omata 5. Apr 2008 22:08

Re: SQL: Concat in WHERE-Klausel?
 
Ich würde das ganze etwas übersichtlicher gestalten...

Delphi-Quellcode:
Format(
  'SELECT vorname||'' ''||name, eMail1, eMail2
   FROM adressen
   WHERE (eMail1 IS NOT NULL OR eMail2 IS NOT NULL)
     AND vorname||'' ''||name = %s',
  [QuotedStr(Person.AsString)]
);

DP-Maintenance 6. Apr 2008 00:19

DP-Maintenance
 
Dieses Thema wurde von "Jelly" von "Object-Pascal / Delphi-Language" nach "Datenbanken" verschoben.
Hat ja wohl was eindeutig mit Datenbanken zu tun


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