SQL Server - Ayuda con Update en cadena de caracteres

   
Vista:

Ayuda con Update en cadena de caracteres

Publicado por Juan Carlos Mustacchio (2 intervenciones) el 29/09/2011 20:51:03
Buenas tardes, antes todo muchas gracias por la atención.
Tengo que realizar un update en una cadena de caracteres (20) alfanumerico.
Necesito actualizar sólo las primeras 6 posiciones.

Hago el ejemplo.

El campo tiene como valor ejemplo : 'cadenaxxxxxxxxxxxxxx'

Y quiero cambiar a todos aquellos registros que comienzan con la palabra 'cadena' por 'numero'.

El script sencillo lo haría así:

update mitabla
set campo= replace (campo,'cadena','numero')
where campo like 'cadena%'

Lo que me devolvería 'numeroxxxxxxxxxxxxxx'

Esto me funciona bárbaro, pero puede darse la posibilidad de que dentro de la cadena encuentre nuevamente la palabra 'cadena', y me lo reemplace también, lo que sería un error.
Ejemplo:

Si existe un registro que sea : 'cadenaxxxxcadenaxxxx'

Con el update que estoy utilizando me quedaría así 'numeroxxxxnumeroxxxx' , pero en realidad necesito que sólo modifique la primera parte de la cadena, quedando así 'numeroxxxxcadenaxxxx'


Si no está claro por favor preguntenme. Muchas gracias por la ayuda!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

Ayuda con Update en cadena de caracteres

Publicado por Isaias (3180 intervenciones) el 29/09/2011 21:34:39
No mencionas que VERSION estas ocupando, el RIGHT y LEFT son de 2000 y superior.

Ejemplo:

-- Para probar el codigo
create table #mitabla (campo varchar(50))
insert into #mitabla values('cadenaxxxxcadenaxxxx')
insert into #mitabla values('cadenaxxxxcadenaxxxx')
insert into #mitabla values('cadenaxxxxcadenaxxxx')
insert into #mitabla values('cadenaxxxxcadenaxxxx')
insert into #mitabla values('cadenaxxxx123456xxxx')
insert into #mitabla values('nocambiarxxxxcadenaxxxx')
insert into #mitabla values('nocambiarxxxxcadenaxxxx')
insert into #mitabla values('nocambiarxxxxcadenaxxxx')
insert into #mitabla values('nocambiarxxxxcadenaxxxx')


update #mitabla
set campo = 'numero' + substring(campo, 7, len(campo)) -- replace (campo,'cadena','numero')
where left(campo,6) = 'cadena'-- like 'cadena%'

select * from #mitabla

numeroxxxxcadenaxxxx
numeroxxxxcadenaxxxx
numeroxxxxcadenaxxxx
numeroxxxxcadenaxxxx
numeroxxxx123456xxxx
nocambiarxxxxcadenaxxxx
nocambiarxxxxcadenaxxxx
nocambiarxxxxcadenaxxxx
nocambiarxxxxcadenaxxxx
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con Update en cadena de caracteres

Publicado por Juan Carlos Mustacchio (2 intervenciones) el 01/10/2011 20:12:49
Muchísimas gracias Isaias !!!

Lo probé.. anda perfecto y es exactamente lo que necesito. Eres el mejor !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

Ayuda con Update en cadena de caracteres

Publicado por Isaias (3180 intervenciones) el 03/10/2011 19:21:00
De nada, ¿mejor en que?, tengo muchas ganas de seguir aprendiendo.....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar