Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

funcion en SQL

Estas en el tema de funcion en SQL en el foro de SQL Server en Foros del Web. Funcion en un select para devolver el valor de un campo de tipo varchar. es decir si tengo 101g 4506hj 78r quiero obtener 101 4506 ...
  #1 (permalink)  
Antiguo 04/10/2005, 15:55
 
Fecha de Ingreso: septiembre-2005
Mensajes: 9
Antigüedad: 19 años, 2 meses
Puntos: 0
funcion en SQL

Funcion en un select para devolver el valor de un campo de tipo varchar.

es decir si tengo

101g
4506hj
78r

quiero obtener

101
4506
78

y si es necesario poder ordenarlo por valor
  #2 (permalink)  
Antiguo 04/10/2005, 21:53
 
Fecha de Ingreso: septiembre-2003
Mensajes: 248
Antigüedad: 21 años, 2 meses
Puntos: 2
hola, que manejador usas?
segun eso creo se podrá hacer
saludos
__________________
Jose A
  #3 (permalink)  
Antiguo 05/10/2005, 08:47
 
Fecha de Ingreso: septiembre-2005
Mensajes: 9
Antigüedad: 19 años, 2 meses
Puntos: 0
Conversión

Hola estoy usando SQL Server 2000 y tengo un campo de tipo varchar y quiero obtener la parte numerica y poder ordenar por este campo pero como te digo en forma numerica, estoy desarrollando en VB. Net
  #4 (permalink)  
Antiguo 05/10/2005, 12:54
 
Fecha de Ingreso: septiembre-2003
Mensajes: 248
Antigüedad: 21 años, 2 meses
Puntos: 2
Hola, mira esta funcion:
create function nocar(@var varchar(10))
returns integer
as
begin
declare @i int --indice
declare @l int --longitud
declare @c char(2) --caracter
declare @retorno int --retorno
declare @var2 varchar(10)
set @i=1
set @l=len(@var)
set @var2=@var
while (@i<=@l)
begin
set @c=substring(@var,@i,1)
if (ascii(@c)<48)
begin
set @var2=replace(@var2,@c,'')
end
if (ascii(@c)>57)
begin
set @var2=replace(@var2,@c,'')
end
set @i = @i + 1
end
set @l=len(@var2)
if @l>0
begin
set @retorno=cast( @var2 as integer)
end
else
begin
set @retorno=0
end
return (@retorno)
end

y lo llamaba asi:
select mibd.dbo.nocar(campo1) as nro,campo2
from mitabla order by nro desc
el ascci 48 =1 y el 57 = 0, por eso ese intervalo

por supuesto, es solo una idea pero te puede servir.

suerte y saludos
__________________
Jose A
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:56.