separar cadena

07/04/2006 - 19:29 por Andrey | Informe spam
Hola Grupo...

Tengo una columna que me almacena un dato el cual es nemotecnico.
el campo almacena un numero de caracteres alfabeticos al principio y al
final, y en medio de los 2 un numero de caracteres numericos.

Mi necesidad es obtener solo la parte de caracteres numericos del dato.
Ejemplo:

EL DATO: E144C
EL RESULTADO 144

PUEDE SUCEDER QUE A VECES HAY O NO CARACTERES ALFABETICOS AL FINAL.

MUCHAS GRACIAS

Preguntas similare

Leer las respuestas

#1 Maxi
07/04/2006 - 20:08 | Informe spam
Hola, si usa SQL2005 recomiendo para esto hacer la funcion en el CLR


Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"Isaias" escribió en el mensaje
news:
No creo que exista alguna funcion que haga el trabajo, vas a tener que
hacerlo a "manita".

Puedes, enviar tu STRING a una funcion, definida por ti, donde recorras
los
caracteres y separes aquellos que son numericos.

No veo otra forma
Saludos
IIslas


"Andrey" escribió:

Hola Grupo...

Tengo una columna que me almacena un dato el cual es nemotecnico.
el campo almacena un numero de caracteres alfabeticos al principio y al
final, y en medio de los 2 un numero de caracteres numericos.

Mi necesidad es obtener solo la parte de caracteres numericos del dato.
Ejemplo:

EL DATO: E144C
EL RESULTADO 144

PUEDE SUCEDER QUE A VECES HAY O NO CARACTERES ALFABETICOS AL FINAL.

MUCHAS GRACIAS


Respuesta Responder a este mensaje
#2 Alejandro Mesa
07/04/2006 - 20:27 | Informe spam
Andrey,

Estoy de acuerdo con Isaias, tendras que implementar una funcion definida
por el usuario que haga ese trabajo. Aca tienes un par de ideas, usa la que
mas te convenga.

create function ufn_f1 (
@input_s varchar(8000)
)
returns int
as
begin
declare @s varchar(8000)
declare @i int

set @s = @input_s
set @i = patindex('%[^0123456789]%', @s)

while @i > 0
begin
set @s = replace(@s, substring(@s, @i, 1), '')
set @i = patindex('%[^0123456789]%', @s)
end

return cast(nullif(@s, '') as int)
end
go

select dbo.ufn_f1('E144C')
go

drop function dbo.ufn_f1
go

select
identity(int, 1, 1) as number
into
dbo.number
from
sysobjects as a
cross join
sysobjects as b
go

alter table dbo.number
add constraint pk_number primary key clustered (number)
go

create function ufn_f1 (
@input_s varchar(8000)
)
returns varchar(8000)
as
begin
declare @s varchar(8000)

set @s = ''

select @s = @s + case when isnumeric(substring(@input_s, n.number, 1)) = 1
then substring(@input_s, n.number, 1) else '' end
from dbo.number as n
where n.number <= len(@input_s)
order by n.number

return cast(nullif(@s, '') as int)
end
go

select dbo.ufn_f1('E144C')
go

drop function dbo.ufn_f1
go

drop table dbo.number
go

Tener una tabla de numeros puede ayudar mucho.


AMB


"Andrey" wrote:

Hola Grupo...

Tengo una columna que me almacena un dato el cual es nemotecnico.
el campo almacena un numero de caracteres alfabeticos al principio y al
final, y en medio de los 2 un numero de caracteres numericos.

Mi necesidad es obtener solo la parte de caracteres numericos del dato.
Ejemplo:

EL DATO: E144C
EL RESULTADO 144

PUEDE SUCEDER QUE A VECES HAY O NO CARACTERES ALFABETICOS AL FINAL.

MUCHAS GRACIAS


Respuesta Responder a este mensaje
#3 Andrey
07/04/2006 - 21:30 | Informe spam
Gracias Isaias, queria saberlo por personas como ustedes, a veces uno piensa
que no hay herramienta en el motor para algo y ustedes la tienen.

Ya habia buscado mucho y tampoco habia encontrado nada.



"Isaias" escribió:

No creo que exista alguna funcion que haga el trabajo, vas a tener que
hacerlo a "manita".

Puedes, enviar tu STRING a una funcion, definida por ti, donde recorras los
caracteres y separes aquellos que son numericos.

No veo otra forma
Saludos
IIslas


"Andrey" escribió:

> Hola Grupo...
>
> Tengo una columna que me almacena un dato el cual es nemotecnico.
> el campo almacena un numero de caracteres alfabeticos al principio y al
> final, y en medio de los 2 un numero de caracteres numericos.
>
> Mi necesidad es obtener solo la parte de caracteres numericos del dato.
> Ejemplo:
>
> EL DATO: E144C
> EL RESULTADO 144
>
> PUEDE SUCEDER QUE A VECES HAY O NO CARACTERES ALFABETICOS AL FINAL.
>
> MUCHAS GRACIAS
>
>
Respuesta Responder a este mensaje
#4 Andrey
07/04/2006 - 21:31 | Informe spam
Gracias Maxi...

No, es Sql server 2000



"Maxi" escribió:

Hola, si usa SQL2005 recomiendo para esto hacer la funcion en el CLR


Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"Isaias" escribió en el mensaje
news:
> No creo que exista alguna funcion que haga el trabajo, vas a tener que
> hacerlo a "manita".
>
> Puedes, enviar tu STRING a una funcion, definida por ti, donde recorras
> los
> caracteres y separes aquellos que son numericos.
>
> No veo otra forma
> Saludos
> IIslas
>
>
> "Andrey" escribió:
>
>> Hola Grupo...
>>
>> Tengo una columna que me almacena un dato el cual es nemotecnico.
>> el campo almacena un numero de caracteres alfabeticos al principio y al
>> final, y en medio de los 2 un numero de caracteres numericos.
>>
>> Mi necesidad es obtener solo la parte de caracteres numericos del dato.
>> Ejemplo:
>>
>> EL DATO: E144C
>> EL RESULTADO 144
>>
>> PUEDE SUCEDER QUE A VECES HAY O NO CARACTERES ALFABETICOS AL FINAL.
>>
>> MUCHAS GRACIAS
>>
>>



Respuesta Responder a este mensaje
#5 Andrey
07/04/2006 - 21:34 | Informe spam
Muchas Gracias Alejandro...

Facil, despues de ver lo que hiciste.

Ambos ejemplos estan excelentes.



"Alejandro Mesa" escribió:

Andrey,

Estoy de acuerdo con Isaias, tendras que implementar una funcion definida
por el usuario que haga ese trabajo. Aca tienes un par de ideas, usa la que
mas te convenga.

create function ufn_f1 (
@input_s varchar(8000)
)
returns int
as
begin
declare @s varchar(8000)
declare @i int

set @s = @input_s
set @i = patindex('%[^0123456789]%', @s)

while @i > 0
begin
set @s = replace(@s, substring(@s, @i, 1), '')
set @i = patindex('%[^0123456789]%', @s)
end

return cast(nullif(@s, '') as int)
end
go

select dbo.ufn_f1('E144C')
go

drop function dbo.ufn_f1
go

select
identity(int, 1, 1) as number
into
dbo.number
from
sysobjects as a
cross join
sysobjects as b
go

alter table dbo.number
add constraint pk_number primary key clustered (number)
go

create function ufn_f1 (
@input_s varchar(8000)
)
returns varchar(8000)
as
begin
declare @s varchar(8000)

set @s = ''

select @s = @s + case when isnumeric(substring(@input_s, n.number, 1)) = 1
then substring(@input_s, n.number, 1) else '' end
from dbo.number as n
where n.number <= len(@input_s)
order by n.number

return cast(nullif(@s, '') as int)
end
go

select dbo.ufn_f1('E144C')
go

drop function dbo.ufn_f1
go

drop table dbo.number
go

Tener una tabla de numeros puede ayudar mucho.


AMB


"Andrey" wrote:

> Hola Grupo...
>
> Tengo una columna que me almacena un dato el cual es nemotecnico.
> el campo almacena un numero de caracteres alfabeticos al principio y al
> final, y en medio de los 2 un numero de caracteres numericos.
>
> Mi necesidad es obtener solo la parte de caracteres numericos del dato.
> Ejemplo:
>
> EL DATO: E144C
> EL RESULTADO 144
>
> PUEDE SUCEDER QUE A VECES HAY O NO CARACTERES ALFABETICOS AL FINAL.
>
> MUCHAS GRACIAS
>
>
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida