eliminar valores

08/08/2005 - 23:34 por Erick Sanchez | Informe spam
Estoy intentando eliminar letras de cadenas de caracteres que contienen
nombres son en realidad casi 1000 filas las que hay que modificar. para
eliminar un valor x estoy utilizando la funcion charindex de esta forma

update table1
set col1=substring(col1,1,charindex('char',col1)-1)
si fuera un solo dato me funciona pero como les dije son casi 1000 registros
.

Existe alguna funcion de caracteres que me permita eliminar mas de un
registro

gracias

Preguntas similare

Leer las respuestas

#6 Alejandro Mesa
09/08/2005 - 17:16 | Informe spam
update tab
set c1=replace(c1,'-','')
where substring(c1,12,1)='-'



update tab
set c1= '-' + replace(c1,'-','')
where substring(c1,12,1)='-'


AMB

"Erick Sanchez" wrote:


Tambien me pasa con los valores negativos los datos vienen con el signo al
final yo lo quite con replace pero ahora como agrego el signo al principio.
ejemplo
los datos vienen
00000125.23-
00000011.35-
los 0 son por que estos datos estan en formato nvarchar de 12


update tab
set c1=replace(c1,'-','')
where substring(c1,12,1)='-'




"Erick Sanchez" escribió en el mensaje
news:
>
>
> Bueno en realidad si es un patron a los nombres siempre se les agrega un
> caracter al final y algunos al comienzo
>
> en realidad es asi
>
> luis}
> erick~
> ?alberto
>
> "Alejandro Mesa" escribió en el
> mensaje news:
>> Erick,
>>
>> Cual es el error que te manda?
>>
>> El problema que veo es que no existe un patron para tratar todos los
>> cambios
>> de la misma manera. VVas a tener que hacerlo por parte.
>>
>> Ejemplo:
>>
>> declare @t table (
>> c1 varchar(25)
>> )
>>
>> insert into @t values('luis')
>> insert into @t values('erick')
>> insert into @t values('eduardo')
>> insert into @t values('miguelc')
>> insert into @t values('manxuel')
>> insert into @t values('albat')
>> insert into @t values('ric~ard?')
>>
>> update @t
>> set c1 = replace(replace(c1, '~', ''), '?', '')
>> where c1 = 'ric~ard?'
>>
>> update @t
>> set c1 = replace(c1, 'x', '')
>> where c1 = 'manxuel'
>>
>> select * from @t
>> go
>>
>>
>> AMB
>>
>>
>>
>> "Erick Sanchez" wrote:
>>
>>>
>>> Me refiero a filas
>>>
>>> son 100 distintos nombres almacenados en una tabla
>>>
>>> ejemplo
>>> luis
>>> erick
>>> eduardo
>>> miguelc
>>> manxuel
>>> albat
>>> ric~ard?
>>>
>>> asi esta lo que pasa como ves algunos caracteres extraños y tengo que
>>> eliminarlos, intente con Charindex como dije anteriormente y no funciono
>>> me
>>> manda un error cuando trato de modificar varias lineas para un solo
>>> valor
>>> funciona. Meti la funcion en un cursor y pasa lo mismo.
>>>
>>> "Alejandro Mesa" escribió en
>>> el
>>> mensaje news:
>>> > Erick,
>>> >
>>> > A que te refieres cuando mencionas "registros", a filas en la tabla o
>>> > a
>>> > ocurrencias de otros caracteres en el valor almacenado en la columna?
>>> >
>>> > Si expones un ejemplo, prodriamos tratar de dar una solucion.
>>> >
>>> > AMB
>>> >
>>> > "Erick Sanchez" wrote:
>>> >
>>> >>
>>> >> Estoy intentando eliminar letras de cadenas de caracteres que
>>> >> contienen
>>> >> nombres son en realidad casi 1000 filas las que hay que modificar.
>>> >> para
>>> >> eliminar un valor x estoy utilizando la funcion charindex de esta
>>> >> forma
>>> >>
>>> >> update table1
>>> >> set col1=substring(col1,1,charindex('char',col1)-1)
>>> >> si fuera un solo dato me funciona pero como les dije son casi 1000
>>> >> registros
>>> >> ..
>>> >>
>>> >> Existe alguna funcion de caracteres que me permita eliminar mas de un
>>> >> registro
>>> >>
>>> >> gracias
>>> >>
>>> >>
>>> >>
>>> >>
>>> >
>>>
>>>
>>>
>>>
>
>
>
>




Respuesta Responder a este mensaje
#7 Alejandro Mesa
09/08/2005 - 17:16 | Informe spam
Erick,

creo que si expones el problema tal y como es, entonces tratare de buscar
una solucion, pero si me sigues moviendo la bola entonces no podre batearla.

Si la cantidad de caracteres raros usados no son muchos, pudieras usar la
funcion replace de forma anidada. Tambien puedes crear una funcion de usuario
que elimine los caracteres que no estan comprendidos entre a-z-A-Z.

create function dbo.f1 (
@s varchar(8000)
)
returns varchar(8000)
as
begin
declare @i int

set @i = patindex('%[^a-zA-Z]%', @s)

while @i != 0
begin
set @s = replace(@s, substring(@s, @i, 1), '')
set @i = patindex('%[^a-zA-Z]%', @s)
end

return (@s)
end
go

create table #t (
c1 varchar(25)
)
go

insert into #t values('luis}')
insert into #t values('erick~')
insert into #t values('?eduardo')

update #t
set c1 = replace(replace(replace(c1, '~', ''), '?', ''), '}', '')

select * from #t

delete #t

insert into #t values('luis}')
insert into #t values('erick~')
insert into #t values('?eduardo')

select
dbo.f1(c1)
from
#t
go

drop function dbo.f1
go

drop table #t
go


AMB



"Erick Sanchez" wrote:


Bueno en realidad si es un patron a los nombres siempre se les agrega un
caracter al final y algunos al comienzo

en realidad es asi

luis}
erick~
?alberto

"Alejandro Mesa" escribió en el
mensaje news:
> Erick,
>
> Cual es el error que te manda?
>
> El problema que veo es que no existe un patron para tratar todos los
> cambios
> de la misma manera. VVas a tener que hacerlo por parte.
>
> Ejemplo:
>
> declare @t table (
> c1 varchar(25)
> )
>
> insert into @t values('luis')
> insert into @t values('erick')
> insert into @t values('eduardo')
> insert into @t values('miguelc')
> insert into @t values('manxuel')
> insert into @t values('albat')
> insert into @t values('ric~ard?')
>
> update @t
> set c1 = replace(replace(c1, '~', ''), '?', '')
> where c1 = 'ric~ard?'
>
> update @t
> set c1 = replace(c1, 'x', '')
> where c1 = 'manxuel'
>
> select * from @t
> go
>
>
> AMB
>
>
>
> "Erick Sanchez" wrote:
>
>>
>> Me refiero a filas
>>
>> son 100 distintos nombres almacenados en una tabla
>>
>> ejemplo
>> luis
>> erick
>> eduardo
>> miguelc
>> manxuel
>> albat
>> ric~ard?
>>
>> asi esta lo que pasa como ves algunos caracteres extraños y tengo que
>> eliminarlos, intente con Charindex como dije anteriormente y no funciono
>> me
>> manda un error cuando trato de modificar varias lineas para un solo valor
>> funciona. Meti la funcion en un cursor y pasa lo mismo.
>>
>> "Alejandro Mesa" escribió en el
>> mensaje news:
>> > Erick,
>> >
>> > A que te refieres cuando mencionas "registros", a filas en la tabla o a
>> > ocurrencias de otros caracteres en el valor almacenado en la columna?
>> >
>> > Si expones un ejemplo, prodriamos tratar de dar una solucion.
>> >
>> > AMB
>> >
>> > "Erick Sanchez" wrote:
>> >
>> >>
>> >> Estoy intentando eliminar letras de cadenas de caracteres que
>> >> contienen
>> >> nombres son en realidad casi 1000 filas las que hay que modificar.
>> >> para
>> >> eliminar un valor x estoy utilizando la funcion charindex de esta
>> >> forma
>> >>
>> >> update table1
>> >> set col1=substring(col1,1,charindex('char',col1)-1)
>> >> si fuera un solo dato me funciona pero como les dije son casi 1000
>> >> registros
>> >> ..
>> >>
>> >> Existe alguna funcion de caracteres que me permita eliminar mas de un
>> >> registro
>> >>
>> >> gracias
>> >>
>> >>
>> >>
>> >>
>> >
>>
>>
>>
>>




Respuesta Responder a este mensaje
#8 Erick Sanchez
09/08/2005 - 17:31 | Informe spam
Disculpa por el enrredo... es que los datos provienen de un archivo de
formato de texto creado por la Base de Datos Btrieve de Novell y la otra
persona encargada de esa parte esta tratando de depurar lo mas posible los
datos para que a mi en sql no me cueste tanto arreglarlos.. dado que eso
luego va para un cubo prefiero arreglar lo que tenga que arreglar en tsql y
no en MDX el soporte a dudas en el foro de olap para MDX es escasa.

La funcion se ajusto correctamente a lo que esperaba Gracias.

Se fue de cuadrangular entonces

"Alejandro Mesa" escribió en el
mensaje news:
Erick,

creo que si expones el problema tal y como es, entonces tratare de buscar
una solucion, pero si me sigues moviendo la bola entonces no podre
batearla.

Si la cantidad de caracteres raros usados no son muchos, pudieras usar la
funcion replace de forma anidada. Tambien puedes crear una funcion de
usuario
que elimine los caracteres que no estan comprendidos entre a-z-A-Z.

create function dbo.f1 (
@s varchar(8000)
)
returns varchar(8000)
as
begin
declare @i int

set @i = patindex('%[^a-zA-Z]%', @s)

while @i != 0
begin
set @s = replace(@s, substring(@s, @i, 1), '')
set @i = patindex('%[^a-zA-Z]%', @s)
end

return (@s)
end
go

create table #t (
c1 varchar(25)
)
go

insert into #t values('luis}')
insert into #t values('erick~')
insert into #t values('?eduardo')

update #t
set c1 = replace(replace(replace(c1, '~', ''), '?', ''), '}', '')

select * from #t

delete #t

insert into #t values('luis}')
insert into #t values('erick~')
insert into #t values('?eduardo')

select
dbo.f1(c1)
from
#t
go

drop function dbo.f1
go

drop table #t
go


AMB



"Erick Sanchez" wrote:


Bueno en realidad si es un patron a los nombres siempre se les agrega un
caracter al final y algunos al comienzo

en realidad es asi

luis}
erick~
?alberto

"Alejandro Mesa" escribió en el
mensaje news:
> Erick,
>
> Cual es el error que te manda?
>
> El problema que veo es que no existe un patron para tratar todos los
> cambios
> de la misma manera. VVas a tener que hacerlo por parte.
>
> Ejemplo:
>
> declare @t table (
> c1 varchar(25)
> )
>
> insert into @t values('luis')
> insert into @t values('erick')
> insert into @t values('eduardo')
> insert into @t values('miguelc')
> insert into @t values('manxuel')
> insert into @t values('albat')
> insert into @t values('ric~ard?')
>
> update @t
> set c1 = replace(replace(c1, '~', ''), '?', '')
> where c1 = 'ric~ard?'
>
> update @t
> set c1 = replace(c1, 'x', '')
> where c1 = 'manxuel'
>
> select * from @t
> go
>
>
> AMB
>
>
>
> "Erick Sanchez" wrote:
>
>>
>> Me refiero a filas
>>
>> son 100 distintos nombres almacenados en una tabla
>>
>> ejemplo
>> luis
>> erick
>> eduardo
>> miguelc
>> manxuel
>> albat
>> ric~ard?
>>
>> asi esta lo que pasa como ves algunos caracteres extraños y tengo que
>> eliminarlos, intente con Charindex como dije anteriormente y no
>> funciono
>> me
>> manda un error cuando trato de modificar varias lineas para un solo
>> valor
>> funciona. Meti la funcion en un cursor y pasa lo mismo.
>>
>> "Alejandro Mesa" escribió en
>> el
>> mensaje news:
>> > Erick,
>> >
>> > A que te refieres cuando mencionas "registros", a filas en la tabla
>> > o a
>> > ocurrencias de otros caracteres en el valor almacenado en la
>> > columna?
>> >
>> > Si expones un ejemplo, prodriamos tratar de dar una solucion.
>> >
>> > AMB
>> >
>> > "Erick Sanchez" wrote:
>> >
>> >>
>> >> Estoy intentando eliminar letras de cadenas de caracteres que
>> >> contienen
>> >> nombres son en realidad casi 1000 filas las que hay que modificar.
>> >> para
>> >> eliminar un valor x estoy utilizando la funcion charindex de esta
>> >> forma
>> >>
>> >> update table1
>> >> set col1=substring(col1,1,charindex('char',col1)-1)
>> >> si fuera un solo dato me funciona pero como les dije son casi 1000
>> >> registros
>> >> ..
>> >>
>> >> Existe alguna funcion de caracteres que me permita eliminar mas de
>> >> un
>> >> registro
>> >>
>> >> gracias
>> >>
>> >>
>> >>
>> >>
>> >
>>
>>
>>
>>




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