Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

MySQL "length - instr" incorrecto

Estas en el tema de MySQL "length - instr" incorrecto en el foro de Bases de Datos General en Foros del Web. Buenos dias! Tengo una tabla con emails, y necesito obtener los dominios únicos. Una tarea sencilla. Pero me encuentro con un problema en la siguiente ...
  #1 (permalink)  
Antiguo 15/09/2010, 03:44
 
Fecha de Ingreso: marzo-2010
Ubicación: Buenos Aires
Mensajes: 59
Antigüedad: 14 años, 1 mes
Puntos: 2
MySQL "length - instr" incorrecto

Buenos dias!

Tengo una tabla con emails, y necesito obtener los dominios únicos. Una tarea sencilla.

Pero me encuentro con un problema en la siguiente consulta:

Código:
select distinct right(email, length(email) - instr(email, "@")) as "Dominio" 
from tbl_emails order by right(email, length(email) - instr(email, "@"));
Se supone que esta consulta devuelve todos los caracteres de la derecha, después del @. El caso es que en algunos resultados devuelve también el @. He comprobado manualmente y sólo existe una @ en los emails.

¿Cúal puede ser el error?

Muchas gracias.
  #2 (permalink)  
Antiguo 15/09/2010, 03:58
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 9 meses
Puntos: 150
Respuesta: MySQL "length - instr" incorrecto

Bueno, estuve probando tu consulta en mi base de datos y si que era raro!! busqué y encontre otra forma de sacarlo:

select distinct SUBSTRING_INDEX(email,'@',-1) as Dominio from tbl_emails order by Dominio ASC;
  #3 (permalink)  
Antiguo 15/09/2010, 04:19
 
Fecha de Ingreso: marzo-2010
Ubicación: Buenos Aires
Mensajes: 59
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: MySQL "length - instr" incorrecto

Excelente!

Mira que estuve revisando las funciones de cadenas en el manual de MySQL, pero no había reparado en substring_index().

Muchas gracias.

Etiquetas: mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:35.