Manejo de strings en SQL

Espero alguien pueda ayudarme con ese asunto, tengo una tabla que contiene información de clientes, uno de los campos es: email, es decir contiene los emails de los clientes:
[email protected]
[email protected]
[email protected]
Etc...
Lo que quiero es reemplazar todo lo de la izquierda de la arroba: xxxx@, incluyendo esta por: www. y este resultado actualizarlo en el campo: url de la tabla para tener:
www.sitio1.com
www.sitio2.org
Etc...

1 respuesta

Respuesta
1
En la exposición del problema, se desea sustituir la parte de email por la dirección web, para ello se va a realizar el ejemplo con Oracle:
with datos as (
select '[email protected]' as email from dual union
select '[email protected]' as email from dual union
select '[email protected]' as email from dual
)
select email,
           Replace(email, substr(email, 1, instr(email,'@', 1,1)),'www.') as web
from datos
La consulta factorizada devuelve los datos de ejemplo expuestos, mientras que en la siguiente consulta, se realiza la transformada de los datos, visualizando el dato original (email) y el dato tratado (web).
Pasemos a explicar la transformada:
Hay varias formas de convertir una cadena de texto en otra, he utilizado el replace, ya que era más cómodo que la propia función sustituyera la dirección email por la 'www'. Para "descubrir" la dirección mail y que la función replace la sustituyera, he obtenido el texto (función substr) desde el primer carácter hasta la primera arroba (función instr).
Para otros gestores de BBDD habrá que utilizar otras funciones o con pequeñas modificaciones, pero básicamente este es el concepto más simple y comprensible.
Cierre la pregunta o vuelva a exponer otra duda.
Perdón por la demora, estoy usando Mysql y utilicé la consulta pero me sale este error:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1,1)),"www.") as url
   from members
LIMIT 0, 30' at line 2
Se que comentaste que habría que modificar según el DBMS que se utilice pero no logro encontrar el error. ¿Ademas el resultado se muestra en un alias llamado url o web no? ¿Cómo puedo hacer para que se actualice directamente el campo llamado url de la tabla?
Gracias
Muchas gracias experto, seguí buscando la forma de hacerlo y lo logré basándome en tu anterior respuesta.
UPDATE miembro
SET url = (SELECT REPLACE(url,substr(url,1,INSTR(url,'@')),'www.'));
Funciona usando MySQL.
Saludos

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas