Actualizar campo caracter

21/08/2003 - 15:56 por jiordie | Informe spam
Buenos Días a todos!!,
Tengo una tabla a la cual quiero actualizarle el
campo "Revisar", que es NVARCHAR(100), la cuestion es que
cuando corro el SP, y en el campo hay datos el los
sobreescribe, pero estos datos tengo que dejarlos y
agregarles otra parte: Me explico
el campo "Revisar" es igual a 'a' y le voy a colocar
' c' de tal manera que quede 'a c'.
esto funciona cuando le digo en el update SET Revisar =
Revisar + ' c', y cuando el campo tiene datos, pero si yo
le doy esta orden y el campo no tiene nada tampoco
actualiza nada, ALGUIEN ME PUEDE AYUDAR, por que igual
cuando no tiene nada necesito colocarle el nuevo valor, yo
esto haciendo lo siguiente pero tampoco me ha funcionado:
DECLARE rm CURSOR LOCAL SCROLL FOR
SELECT Revisar FROM Tmp_Validar_Minutas_01
WHERE Registro = @Registro;
OPEN rm
FETCH FIRST FROM rm
INTO @Revisa
IF SUBSTRING(@Revisa,0,1) = NULL
BEGIN
SET @Revisa = '-'
END
UPDATE Tmp_Validar_Minutas_01
SET Revisar = @Revisa + ' - Nro ' + @Reg1 + ' C.P. ' + @Cp
WHERE Registro = @Registro;
CLOSE rm
DEALLOCATE rm

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera [MVP]
21/08/2003 - 16:53 | Informe spam
Primero que nada, como humilde fanático de la Brigada Anticursores (Falange
KIRF - Keep It Relational-Friendly :-)) no uses un cursor cuando puede
evitarse.

En tu caso el problema puede ser que el campo Revisar tenga valores NULL y
eso hace que la concatenación NULL+'x' siempre te devuelve NULL.

Prueba hacerlo asi, donde 'x' es el valor a incorporar al campo.

UPDATE Tmp_Validar_Minutas_01
SET Revisar = CASE ISNULL(Revisar, '')
WHEN '' THEN 'x'
ELSE Revisar + 'x'
END

Gustavo Larriera, MSFT MVP-SQL
Uruguay LatAm

This message is provided "AS IS" with no warranties expressed or implied,
and confers no rights.


"jiordie" wrote in message
news:0d3b01c367eb$f7c38fb0$
Buenos Días a todos!!,
Tengo una tabla a la cual quiero actualizarle el
campo "Revisar", que es NVARCHAR(100), la cuestion es que
cuando corro el SP, y en el campo hay datos el los
sobreescribe, pero estos datos tengo que dejarlos y
agregarles otra parte: Me explico
el campo "Revisar" es igual a 'a' y le voy a colocar
' c' de tal manera que quede 'a c'.
esto funciona cuando le digo en el update SET Revisar Revisar + ' c', y cuando el campo tiene datos, pero si yo
le doy esta orden y el campo no tiene nada tampoco
actualiza nada, ALGUIEN ME PUEDE AYUDAR, por que igual
cuando no tiene nada necesito colocarle el nuevo valor, yo
esto haciendo lo siguiente pero tampoco me ha funcionado:
DECLARE rm CURSOR LOCAL SCROLL FOR
SELECT Revisar FROM Tmp_Validar_Minutas_01
WHERE Registro = @Registro;
OPEN rm
FETCH FIRST FROM rm
INTO @Revisa
IF SUBSTRING(@Revisa,0,1) = NULL
BEGIN
SET @Revisa = '-'
END
UPDATE Tmp_Validar_Minutas_01
SET Revisar = @Revisa + ' - Nro ' + @Reg1 + ' C.P. ' + @Cp
WHERE Registro = @Registro;
CLOSE rm
DEALLOCATE rm
Respuesta Responder a este mensaje
#2 Javier Loria\(MVP\)
21/08/2003 - 20:53 | Informe spam
Hola Victor:
La ventaja del COALESCE es que es ANSI, mientras que ISNULL no :)
Yo usaria COALESCE por compatiblidad con las siguientes versiones de SQL
o con otras plataformas.

Saludos,


Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Víctor Rafael Bocanegra Arias escribio:
Concuerdo contigo Gustavo... pero creo que YO haria algo mas sencillo
;) :

UPDATE Tmp_Validar_Minutas_01
SET Revisar = ISNULL(Revisar,'')+'x'

Víctor Rafael Bocanegra Arias
Lima, Peru
"Gustavo Larriera [MVP]" <remove underscore escribió
en el mensaje news:O3aLMQ$
Primero que nada, como humilde fanático de la Brigada Anticursores
(Falange KIRF - Keep It Relational-Friendly :-)) no uses un cursor
cuando puede evitarse.

En tu caso el problema puede ser que el campo Revisar tenga valores
NULL y eso hace que la concatenación NULL+'x' siempre te devuelve
NULL.

Prueba hacerlo asi, donde 'x' es el valor a incorporar al campo.

UPDATE Tmp_Validar_Minutas_01
SET Revisar = CASE ISNULL(Revisar, '')
WHEN '' THEN 'x'
ELSE Revisar + 'x'
END

Gustavo Larriera, MSFT MVP-SQL
Uruguay LatAm

This message is provided "AS IS" with no warranties expressed or
implied, and confers no rights.


"jiordie" wrote in message
news:0d3b01c367eb$f7c38fb0$
Buenos Días a todos!!,
Tengo una tabla a la cual quiero actualizarle el
campo "Revisar", que es NVARCHAR(100), la cuestion es que
cuando corro el SP, y en el campo hay datos el los
sobreescribe, pero estos datos tengo que dejarlos y
agregarles otra parte: Me explico
el campo "Revisar" es igual a 'a' y le voy a colocar
' c' de tal manera que quede 'a c'.
esto funciona cuando le digo en el update SET Revisar >> Revisar + ' c', y cuando el campo tiene datos, pero si yo
le doy esta orden y el campo no tiene nada tampoco
actualiza nada, ALGUIEN ME PUEDE AYUDAR, por que igual
cuando no tiene nada necesito colocarle el nuevo valor, yo
esto haciendo lo siguiente pero tampoco me ha funcionado:
DECLARE rm CURSOR LOCAL SCROLL FOR
SELECT Revisar FROM Tmp_Validar_Minutas_01
WHERE Registro = @Registro;
OPEN rm
FETCH FIRST FROM rm
INTO @Revisa
IF SUBSTRING(@Revisa,0,1) = NULL
BEGIN
SET @Revisa = '-'
END
UPDATE Tmp_Validar_Minutas_01
SET Revisar = @Revisa + ' - Nro ' + @Reg1 + ' C.P. ' + @Cp
WHERE Registro = @Registro;
CLOSE rm
DEALLOCATE rm
Respuesta Responder a este mensaje
#3 Emilio Boucau
22/08/2003 - 16:17 | Informe spam
Jua jua ! Gustavo, tu falange KIRF me hizo recordar la regla KISS de Perter
Norton: Keep It Simple, Stupid !

Saludos !

Emilio Boucau
Microsoft MVP SQL Server
http://www.portalsql.com
PASS Spanish Group
http://www.sqlpass.org

Buenos Aires - Argentina
Respuesta Responder a este mensaje
#4 Gustavo Larriera [MVP]
22/08/2003 - 19:45 | Informe spam
:-))))))))))))))))))))))))))))))))))))

Gustavo Larriera, MSFT MVP-SQL
Uruguay LatAm

This message is provided "AS IS" with no warranties expressed or implied,
and confers no rights.


"Emilio Boucau" wrote in message
news:
Jua jua ! Gustavo, tu falange KIRF me hizo recordar la regla KISS de


Perter
Norton: Keep It Simple, Stupid !

Saludos !

Emilio Boucau
Microsoft MVP SQL Server
http://www.portalsql.com
PASS Spanish Group
http://www.sqlpass.org

Buenos Aires - Argentina


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida