> Faqs > Seleccionar una parte de una cadena en SQL Server

Seleccionar una parte de una cadena en SQL Server

Necesito hacer una consulta en SQL Server para seleccionar el dominio del correo de los emails que tengo en una tabla. Por ejemplo, si tengo el email "correo@dominio.com", quiero obtener "dominio.com".

Por otra parte, quiero sacar un listado de los correos de aquellos usuarios que no tienen buzones del tipo Hotmail o Yahoo. Es decir, hacer un select de los usuarios que tienen correos que no corresponden con ciertos dominios.

Respuestas

Para realizar estas tareas, puedes seguir los siguientes pasos:

Obtener el dominio del correo en una consulta SQL

La primera parte consiste en usar la función CHARINDEX junto con la función RIGHT para extraer el dominio del correo.

Supongamos que tu tabla se llama users y tiene un campo email. Entonces puedes usar una consulta así:

SELECT RIGHT(email, LEN(email) - CHARINDEX('@', email)) AS Dominio
FROM users;

Seleccionar correos que no corresponden a ciertos dominios

Puedes usar la cláusula NOT LIKE en tu consulta SQL. Esto te permitiría filtrar los registros que no sean parecidos.

SELECT email
FROM users
WHERE 
    RIGHT(email, LEN(email) - CHARINDEX('@', email)) NOT LIKE '%hotmail.com%'
AND
    RIGHT(email, LEN(email) - CHARINDEX('@', email)) NOT LIKE '%yahoo.com%';

Espero que te ayuden estas propuestas de sentencias SQL. Creo que son bastante claras. Del mismo modo puedes filtrar correos de cualquier dominio que puedas necesitar.

Alba
355 9 25 13