raban
Goto Top

SQL Abfrage in SQL 2005 mit Filter erstellen

ich habe in einer Adress-Tabelle mit Splatenüberschriften
Vorname | Name | EMail

Max | Mustermann | max@web.de
Elise | Download | elise@google.de

etc....

Ich will eine SQL Abfrage starten auf meine Tabelle die mir dann folgendes anzeigt

in der Spalte EMAIL sollen nur die Einträge nach dem at Zeichen '@' angezeigt werden

Vorname | Name | EMail

Max | Mustermann | web.de
Elise | Download | google.de

nur ich weiss leider nicht wie und mit welchem Befehl das geht...geht das überhaupt? Ist ja eine Art Filter...soll in der Spalte EMAIL nur das anzeigen was nach @ kommt

SELECT NAME AS Name,
Vorname AS Vorname
EMAIL AS EMail,
FROM ADDRESSES

bekomme ich

Name | Vorname | EMail

Max | Mustermann | max@web.de
Elise | Download | elise@google.de

Vielen Dank für Eure HIlfe

MFG
Robert

Content-Key: 101492

Url: https://administrator.de/contentid/101492

Ausgedruckt am: 29.03.2024 um 13:03 Uhr

Mitglied: Logan000
Logan000 11.11.2008 um 09:00:01 Uhr
Goto Top
Moin Moin

nur ich weiss leider nicht wie und mit welchem Befehl das geht...geht das überhaupt? Ist ja eine Art Filter.
Nein, kein Filter. Schlieslich wilst du ja alle Datensätze sehen.

Das machst du über eine Feldfunktion. Sieht in SQL etwa so aus (ungetestet):
SELECT Vorname, Nachname, Right([Email],Len(Email])-InStr([Email],"@")) AS domain  
FROM MeineTabelle;

Kleiner Tipp du soltest evtl. nochüberprüfen das Feld Email nicht Leer oder Null ist.

Gruß L.
Mitglied: Raban
Raban 11.11.2008 um 09:47:04 Uhr
Goto Top
Hallo,

vielen Dank erstmal für die schnelle Antwort ...leider kommt folgende Meldung

Meldung 156, Ebene 15, Status 1, Zeile 1
Falsche Syntax in der Nähe des 'Right'-Schlüsselwortes.

die Abfrage lautet nun

SELECT COMPANY1, FIRSTNAME0, LASTNAME0, EMAIL0 Right([EMAIL0],Len(EMAIL0])-InStr([EMAIL0],"@")) AS domain
FROM ADDRESSES

Hast Du event. noch eine Idee?
Vielen Dank für deine Mühe
Gruß
Robert
Mitglied: Biber
Biber 11.11.2008 um 10:01:07 Uhr
Goto Top
Moin Raban,

eventuell fehlt ein Komma zwischen "EMAIL0" und "Right( EMail0,....".

Grüße
Biber
Mitglied: Raban
Raban 11.11.2008 um 10:43:27 Uhr
Goto Top
Danke Biber,

jetzt kommt die Meldung

Meldung 102, Ebene 15, Status 1, Zeile 1
Falsche Syntax in der Nähe von ']'.

fehlt hier an der Stelle was?

Len(EMAIL0]) sollte eventl. so aussehen

Len([EMAIL0])

@edit@ - wenn ich das tue dann kommt folgende Meldung

Meldung 195, Ebene 15, Status 10, Zeile 1
'InStr' wird nicht als Name einer integrierten Funktion erkannt.


Danke
Gruß
Robert
Mitglied: Biber
Biber 11.11.2008 um 11:24:39 Uhr
Goto Top
Moin Raban,

stimmt, beim SQLServer ist die INSTR-Funktionalität zwar auch bereitgestellt, aber heißt nicht INSTR(), sondern CHARINDEX().

Vermutlich damit die Access-Umsteiger merken, dass sie jetzt ein anderes Blech drunterhaben.

Syntax für die Positionsermittlung des Zeichens "@" im Feld EMAIL0 wäre dann:
SELECT .... CHARINDEX( '@', [Email0]) AS Position 
from Addresses

Grüße
Biber
Mitglied: Raban
Raban 11.11.2008 um 11:34:11 Uhr
Goto Top
SUPER jetzt funktioniert
Vielen Vielen DANK....ich bin so Happy face-smile

falls noch jemand das benötigt, aus welchem Grund auch immer, hier ist die komplette Abfrage

SELECT COMPANY1, FIRSTNAME0, LASTNAME0, EMAIL0, Right([EMAIL0],Len([EMAIL0])-CHARINDEX('@', [EMAIL0])) AS domain
FROM ADDRESSES

Schöne Grüße aus Hannover
Robert
Mitglied: MadMax
MadMax 11.11.2008 um 11:35:33 Uhr
Goto Top
Hallo Robert,

InStr kennt der SQL Server nicht, hier heißt das charindex. Also statt "InStr (EMAIL0, '@')" mußt Du "charindex ('@', EMAIL0)" einsetzen. Und ja, die zu suchende Zeichenfolge kommt beim SQL Server zuerst.

Gruß, Mad Max

Edit: Ups, zu langsam face-wink