AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL: Concat in WHERE-Klausel?
Thema durchsuchen
Ansicht
Themen-Optionen

SQL: Concat in WHERE-Klausel?

Ein Thema von Chaoten-Joe · begonnen am 5. Apr 2008 · letzter Beitrag vom 6. Apr 2008
Antwort Antwort
Chaoten-Joe

Registriert seit: 11. Mär 2007
Ort: Werl
41 Beiträge
 
Turbo Delphi für Win32
 
#1

SQL: Concat in WHERE-Klausel?

  Alt 5. Apr 2008, 21:02
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:

'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
Christian Becker
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: SQL: Concat in WHERE-Klausel?

  Alt 5. Apr 2008, 21:15
So geht das :

select nr||namefrom Adresse as test Wie üblich dann eben Dataset anlegen und auf Test zugreifen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Chaoten-Joe

Registriert seit: 11. Mär 2007
Ort: Werl
41 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: SQL: Concat in WHERE-Klausel?

  Alt 5. Apr 2008, 22:52
Also zwei Abfragen nacheinander?
Oder kann man das auch in einer verpacken?
Christian Becker
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: SQL: Concat in WHERE-Klausel?

  Alt 5. Apr 2008, 22:54
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: ||
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: SQL: Concat in WHERE-Klausel?

  Alt 5. Apr 2008, 23:03
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
  Mit Zitat antworten Zitat
Chaoten-Joe

Registriert seit: 11. Mär 2007
Ort: Werl
41 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: SQL: Concat in WHERE-Klausel?

  Alt 5. Apr 2008, 23:04
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!
Christian Becker
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: SQL: Concat in WHERE-Klausel?

  Alt 5. Apr 2008, 23:08
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)]
);
  Mit Zitat antworten Zitat
6. Apr 2008, 01:19
Dieses Thema wurde von "Jelly" von "Object-Pascal / Delphi-Language" nach "Datenbanken" verschoben.
Hat ja wohl was eindeutig mit Datenbanken zu tun
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 16:28 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