problema con cadena.

30/01/2006 - 00:03 por Daniel G. Samborski | Informe spam
Hola, tengo el siguiente problema.

Tengo un listado varchar de numeros.
en este listado tengo

*1
*2
*3
*4
...
*9

lo que necesito hacer es obtener el ultimo numero y sumarle uno.

*9+1=*10

Hasta allí todo bien, pero el *10 lo ordena abajo del 1 y no me funciona.

*1
*10
*2
*3
*4
...
*9

cuando quiero volver a leer el ultimo lee el *9 repitiendo el *10 y deberia
dar *11

Este es el codigo que utilizo.

declare @codent varchar(50)
select @codent = max(CodProd) from productos where len(CodProd) <= 8 and
substring(codprod,1,1) = '*'
set @Codent=substring(@codent,2,len(@codent)-1)
set @codent=@codent + 1
set @codent = '*' + @codent
if @codent is null
set @codent = '*1'

Como podria corregirlo para que tome el valor mas grande de esa lista, en
este caso el *10 y no el *9
Recuerden que puede ser el *10, *15, etc...Se debe incremetar el numero.


Daniel
 

Leer las respuestas

#1 Salvador Ramos
30/01/2006 - 12:59 | Informe spam
Hola,

Lo que no entiendo es por qué no tienes una columna numérica, sin más, y
tampoco para qué necesitas el '*', si lo que quieres es darle un tratamiento
numérico en vez de alfanumérico.

Un saludo
Salvador Ramos
Murcia - España

[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL Server y .NET)


"Daniel G. Samborski" escribió en
el mensaje news:
Hola, tengo el siguiente problema.

Tengo un listado varchar de numeros.
en este listado tengo

*1
*2
*3
*4
...
*9

lo que necesito hacer es obtener el ultimo numero y sumarle uno.

*9+1=*10

Hasta allí todo bien, pero el *10 lo ordena abajo del 1 y no me funciona.

*1
*10
*2
*3
*4
...
*9

cuando quiero volver a leer el ultimo lee el *9 repitiendo el *10 y
deberia dar *11

Este es el codigo que utilizo.

declare @codent varchar(50)
select @codent = max(CodProd) from productos where len(CodProd) <= 8 and
substring(codprod,1,1) = '*'
set @Codent=substring(@codent,2,len(@codent)-1)
set @codent=@codent + 1
set @codent = '*' + @codent
if @codent is null
set @codent = '*1'

Como podria corregirlo para que tome el valor mas grande de esa lista, en
este caso el *10 y no el *9
Recuerden que puede ser el *10, *15, etc...Se debe incremetar el numero.


Daniel

Preguntas similares