Supponendo che il dominio sia un dominio di una sola parola come gmail.com, yahoo.com, usa
select (SUBSTRING_INDEX(SUBSTR(email, INSTR(email, '@') + 1),'.',1))
Il SUBSTR interno ottiene la parte destra dell'indirizzo email dopo @ e il SUBSTRING_INDEX esterno taglierà il risultato al primo periodo.
altrimenti se il dominio dovrebbe contenere più parole come mail.yahoo.com , ecc, usa:
select (SUBSTR(email, INSTR(email, '@') + 1, LENGTH(email) - (INSTR(email, '@') + 1) - LENGTH(SUBSTRING_INDEX(email,'.',-1))))
LENGTH(email) - (INSTR(email, '@') + 1) - LENGTH(SUBSTRING_INDEX(email,'.',-1)) otterrà la lunghezza del dominio meno il TLD (.com, .biz etc. part) utilizzando SUBSTRING_INDEX con un conteggio negativo che calcolerà da destra a sinistra.