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

Preguntas similare

Leer las respuestas

#6 Daniel G. Samborski
30/01/2006 - 18:46 | Informe spam
Muchas gracias, le retoque un par de cosas y funciona de maravillas.

Asi me quedo el codigo ahora.

declare @codent varchar(50)
SELECT @codentÊST(substring(codprod,2,len(codprod)) AS INT)
from productos where len(CodProd) <= 8 and substring(codprod,1,1) = '*'
ORDER BY CAST(substring(codprod,2,len(codprod)) AS INT)
set @codent=@codent + 1
set @codent = '*' + @codent
if @codent is null
set @codent = '*1'
print @codent


Daniel.

"Isaias" escribió en el mensaje
news:
Coloca tambien la CONVERSION en el SELECT

SELECT CAST(substring(codprod,2,len(codprod)) AS INT) .
FROM.
ORDER BY CAST(substring(codprod,2,len(codprod)) AS INT)


Saludos
IIslas


"Daniel G. Samborski" escribió:

Le agregue el order by al select pero me tira un error.

esto es lo que le agregue al select

select @codent = max(CodProd) from productos where len(CodProd) <= 8 and
substring(codprod,1,1) = '*'
order by CAST(substring(codprod,2,len(codprod)) AS INT) /* Este es el
order
by que me sugeriste */

Este es el error.

Server: Msg 8126, Level 16, State 1, Line 3
Column name 'productos.CodProd' is invalid in the ORDER BY clause because
it
is not contained in an aggregate function and there is no GROUP BY
clause.
Server: Msg 8126, Level 16, State 1, Line 3
Column name 'productos.CodProd' is invalid in the ORDER BY clause because
it
is not contained in an aggregate function and there is no GROUP BY
clause.


Daniel.

"Isaias" escribió en el mensaje
news:
> Toma TODO lo que este depues del asterisco y conviertelo a NUMERICO
>
> order by CAST(ubstring(columna 2,len(columna)) AS INT)
>
> ¿Funciona?
> Saludos
> IIslas
>
>
> "Daniel G. Samborski" escribió:
>
>> 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
>>
>>
>>



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