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

#6 Alejandro Mesa
08/04/2006 - 04:06 | Informe spam
Andrey,

Se me fue un error en la segunda funcion. Declare el valor de retorno como
varchar(8000) en vez de int.

> create function ufn_f1 (
> @input_s varchar(8000)
> )
> returns varchar(8000)



create function ufn_f1 (
@input_s varchar(8000)
)
returns int
...


AMB


"Andrey" wrote:


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
> >
> >
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida