2009-06-14 9 views
4

Salut à tous je suis en train de migrer vers un nouveau serveur de messagerie si je veux écrit le script Mysql pour retourner une table comme suivante puis exporter le résultat sous forme de fichier CSV instruction SQL commeMysql sous-chaîne

suivante
`select email,clear,email AS domain from postfix_users ` 

je veux substring tous les caractères précédant le @ et le symbole @ iteself avant le nom de domaine des idées serait une grande aide

mysql> select email,clear,email AS domain from postfix_users ; 

+---------------------------+--------+---------------------------+ 
| email      | clear | domain     | 
+---------------------------+--------+---------------------------+ 
| [email protected]   | passw | [email protected]   | 
+---------------------------+--------+---------------------------+ 
+0

illisible. S'il vous plaît formater – jitter

Répondre

13

Vous pouvez utiliser locate pour trouver la position du @:

LOCATE('@',email) 

Donc, pour trouver le domaine:

SELECT CASE 
    WHEN LOCATE('@',email) = 0 THEN '' 
    ELSE SUBSTRING(email,LOCATE('@',email)+1) 
    END as Domain 
FROM YourTable 
+0

Qu'en est-il de la sélection de courrier électronique et effacer les champs dans la même déclaration –

+0

Ajouter "email, clear", juste après SELECT. Ou ", email, effacer" juste après le domaine. – Andomar

+0

J'ai essayé cela cela a fonctionné sélectionnez SUBSTRING_INDEX (email, '@', 1) AS email, effacer, SUBSTRING (email, LOCATE ('@', email) +1) comme domaine de postfix_users; –