2016-06-30 8 views
0

Ich habe den folgenden SQL-questy
MySQL slpited Zeichenfolge in Bedingung

SELECT Name,Email 
FROM customer 
WHERE Email LIKE '%SUBSTRING_INDEX(SUBSTRING_INDEX(Name, ' ', 1), ' ', -1)%' 
OR Email LIKE '%SUBSTRING_INDEX(SUBSTRING_INDEX(Name, ' ', 2), ' ', -1)%'; 

Im Namen collonb ich Namen wie „Gearge Martin“ habe und Ich mag überprüfen, ob es eine Ähnlichkeit zwischen den Namen und E-Mail-Adressen . Aber diese Abfrage gibt keine Datensätze zurück.

Irgendwelche Vorschläge? Dank

Antwort

0

Verwendung WHERE Email LIKE CONCAT(...):

SELECT Name, Email 
FROM customer 
WHERE Email LIKE CONCAT('%', SUBSTRING_INDEX(SUBSTRING_INDEX(Name, ' ', 1), ' ', -1), '%') OR 
     Email LIKE CONCAT('%', SUBSTRING_INDEX(SUBSTRING_INDEX(Name, ' ', 2), ' ', -1), '%'); 

Sie versuchten, das Email Feld gegen die Zeichenkette 'SUBSTRING_INDEX(...' zu vergleichen, die nicht das, was Sie wollen.

+0

Dank dieser funktionierte gut nur benötigt, um die E-Mail wie in der Front – Stonesmit

0

Sie fügen die Spalte Name in Ihre Abfrage nicht ein. Ändern Sie es wie folgt:

SELECT Name,Email 
FROM customer 
WHERE Email LIKE '%SUBSTRING_INDEX(SUBSTRING_INDEX(' + Name + ', ' ', 1), ' ', -1)%' 
OR Email LIKE '%SUBSTRING_INDEX(SUBSTRING_INDEX(' + Name + ', ' ', 2), ' ', -1)%';