2010-10-15 13 views
34

Aquí hay una tabla de ejemplo:str_replace en SQL ACTUALIZAR?

name  | picture 

John S. | http://servera.host.com/johns.png 
Linda B. | http://servera.host.com/lindab.png 
... 

Digamos que hay varios cientos más registros.

Digamos que también cambiamos los servidores de "servera" a "serverb".

¿Sería posible entrar en esta tabla con una consulta para cambiar el nombre del contenido en la columna "imagen" para que cada registro lea el nombre correcto del servidor?

+3

Sí, en casi todos los motores de bases de datos sería posible hacer esto con una sola consulta de ACTUALIZACIÓN . Sin embargo, dado que no especifica un producto en particular, es probable que solo obtenga respuestas para cualquier producto favorito de alguien. Háganos saber lo que está usando y alguien responderá con la sintaxis de ese producto. –

+0

Oh, eso es cierto, gracias, Larry. Me olvidé de mencionar que estoy desarrollando en MySQL –

+0

Esto es más un punto de fricción arquitectónico que responder su pregunta directamente, pero sugeriría no almacenar el FQDN de la url en su base de datos. Consérvela como una constante en el código de su aplicación, y luego cuando dibuje un enlace a su imagen, el src combinará el PIC_HOST_DOMAIN_NAME. '/ Johns.png'. Esto hace que sea mucho más fácil mover sus imágenes, así como utilizar un CDN como CNAME sentado frente a sus imágenes. –

Respuesta

81

T-SQL:

update TBL 
    set picture = Replace(picture, 'servera', 'serverb') 
where picture like '%servera%' 

Oracle:

update TBL 
    set picture = replace(picture, 'servera', 'serverb') 
where picture like '%servera%' 

MySQL:

update TBL 
    set picture = REPLACE(picture, 'servera', 'serverb') 
where picture like '%servera%' 
+0

Es bueno descubrir funciones fáciles de usar :) gracias por el ejemplo de MySQL. +1 – Ben

14
UPDATE users 
SET picture = REPLACE(picture, 'http://servera.host.com/', 'http://serverb.host.com/') 
WHERE picture LIKE 'http://servera.host.com/%'; 

estoy incluyendo más de la cadena porque me preocuparía 'arreglar' una imagen llamada 'somethingserverasomething.jpg'. También podría pensar en tener una tabla base_url y simplemente almacenar nombres de archivos de imagen en usuarios, pero esa no es la pregunta que me hiciste ;-)