2009-06-15 18 views
0

Hallo alle Ich schreibe eine einfache Mysql Abfrage eine CSV zu ziehen, aber die where-Klausel scheinen keine Ideen zu arbeiten wäre eine großeMysql Abfrage

select SUBSTRING_INDEX(email,'@',1)AS email , clear , SUBSTRING(email,LOCATE('@',email)+1) as domain where domain like 'somestring' from sometable; 

Antwort

1
SELECT 
    SUBSTRING_INDEX(email,'@',1) AS email, 
    clear, 
    SUBSTRING(email,LOCATE('@',email)+1) AS domain 
FROM sometable 
WHERE domain LIKE '%somestring%'; 
+0

Danke für die schnelle Kodierung Olafur, ich habe versehentlich den Beitrag eingereicht, bevor ich es selbst gemacht habe :) alles besser jetzt! –

+0

Es hat nicht funktioniert mysql meckern FEHLER 1054 (42S22): Unbekannte Spalte 'Domäne' in 'WHERE-Klausel' –

1

Johns Code Assist sein sollte stimmen. Meine einzige Ergänzung ist immer überprüfen Sie Ihre SQL-Syntax, wenn Ihr SQL nicht funktioniert.

Sie werden Ihre Fähigkeit verbessern, komplexes SQL zu schreiben, wenn Sie es sorgfältig logisch dann schreiben, um etwas zu schreiben und es dann hier zu veröffentlichen. Ich sage nicht, dass Sie das getan haben, aber Ihr SQL sieht durcheinander aus ... Es sieht so aus, als hätten Sie Ihre Syntax nicht verifiziert ...

In Bezug auf Ihren Kommentar zu John, dass die Domain ungültig ist: Ist 'Domain' der korrekte Feldname? Wenn nicht, was ist der korrekte Feldname und können Sie ihn einfügen. Ich denke, der Code sein sollte:

SELECT 
    SUBSTRING_INDEX(email,'@',1) AS email, 
    clear, 
    SUBSTRING(email,LOCATE('@',email)+1) AS domain 
FROM sometable 
WHERE email LIKE '%@somestring%'; 

Oder

SELECT 
    SUBSTRING_INDEX(email,'@',1) AS email, 
    clear, 
    SUBSTRING(email,LOCATE('@',email)+1) AS domain 
FROM sometable 
WHERE SUBSTRING(email,LOCATE('@',email)+1) LIKE '%somestring%'; 

Grüße,
Frank

0

Dies ist die richtige Abfrage. Ich nehme an, dass es sich um ein Feld aus dieser Tabelle handelt.

SELECT substring_index(email, '@', 1) as email,clear, substring(email, locate('@',email)+1) as domain from table where substring(email, locate('@',email)+1) like '%somestring%'. 
0

wählen SUBSTRING_INDEX (E-Mail, '@', 1) AS E-Mail, klar, SUBSTRING (E-Mail, LOCATE ('@', E-Mail) + 1) als Domäne von sometable wo Domain ‚% somestring % '

Gleicher Operator muss mit "%" Zeichen verwenden.