Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

convertir varchar a integer Sql Server 2008

438 views
Skip to first unread message

charles

unread,
Apr 8, 2009, 11:13:38 AM4/8/09
to
Cordial Saludo.

Se tiene la siguiente instruccion:

select max(convert(integer,substring(pdNoDoc,1,(len(pdNoDoc)-1)))) as consec
from tabla

En Sql Server 2000 si funciona a la perfeccion; en el campo pdnodoc se
guarda un consecutivo numerico acompañado de una N; ejemplo: 7001N

En Sql server 2008 me sale el siguiente error:
Invalid length parameter passed to the LEFT or SUBSTRING function.

parece que esta version no permite convertir de varchar a integer...

Que puedo hacer??

Agradezco la ayuda y sugerencias que me puedan brindar.


charles

unread,
Apr 8, 2009, 12:06:18 PM4/8/09
to
Saludos Carlos.

gracias por tu pronta respuesta pero hice la siguiente prueba:
select cast('100N' as integer) y me sale el siguiente error:

Server: Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value '100N' to data type int.

Por lo tanto es que no permite convertir varchar a integer

que me aconsejan hacer si en Sql Server 2000 si funciona muy bien....

Gracias por sus aportes y respuestas


"Carlos Sacristan" <CarlosS...@discussions.microsoft.com> escribi� en
el mensaje news:6F7E5BBF-0F4E-41E4...@microsoft.com...
>
> No es un tema de versiones, m�s bien creo que es de que los datos que
> tienes
> son diferentes.
>
> Si fuera un error de conversi�n te lo indicar�a, pero en este caso el
> mensaje hace referencia a que el valor del �ltimo par�metro de la funci�n
> SUBSTRING es incorrecto.
>
>
> --
> --
> Un saludo
> -------------------------------
> www.navento.com
> Servicios de Localizaci�n GPS


>
>
> "charles" wrote:
>
>> Cordial Saludo.
>>
>> Se tiene la siguiente instruccion:
>>
>> select max(convert(integer,substring(pdNoDoc,1,(len(pdNoDoc)-1)))) as
>> consec
>> from tabla
>>
>> En Sql Server 2000 si funciona a la perfeccion; en el campo pdnodoc se

>> guarda un consecutivo numerico acompa�ado de una N; ejemplo: 7001N

Alejandro Mesa

unread,
Apr 8, 2009, 12:47:02 PM4/8/09
to
Charles,

Chequea si tienes alguna fila donde la longitud de el valor en esa columna
es zero.

select *
from tu_tabla
where len(pdNoDoc) = 0;
GO

Aqui vez como se reproduce el error.

USE tempdb;
GO

SELECT CAST(SUBSTRING('100N', 1, 3) AS INTEGER);
GO

SELECT CAST(SUBSTRING('100N', 1, -1) AS INTEGER);
GO


AMB

"charles" wrote:

> Saludos Carlos.
>
> gracias por tu pronta respuesta pero hice la siguiente prueba:
> select cast('100N' as integer) y me sale el siguiente error:
>
> Server: Msg 245, Level 16, State 1, Line 1
> Conversion failed when converting the varchar value '100N' to data type int.
>
> Por lo tanto es que no permite convertir varchar a integer
>
> que me aconsejan hacer si en Sql Server 2000 si funciona muy bien....
>
> Gracias por sus aportes y respuestas
>
>

> "Carlos Sacristan" <CarlosS...@discussions.microsoft.com> escribió en
> el mensaje news:6F7E5BBF-0F4E-41E4...@microsoft.com...
> >
> > No es un tema de versiones, más bien creo que es de que los datos que
> > tienes
> > son diferentes.
> >
> > Si fuera un error de conversión te lo indicaría, pero en este caso el
> > mensaje hace referencia a que el valor del último parámetro de la función


> > SUBSTRING es incorrecto.
> >
> >
> > --
> > --
> > Un saludo
> > -------------------------------
> > www.navento.com

> > Servicios de Localización GPS


> >
> >
> > "charles" wrote:
> >
> >> Cordial Saludo.
> >>
> >> Se tiene la siguiente instruccion:
> >>
> >> select max(convert(integer,substring(pdNoDoc,1,(len(pdNoDoc)-1)))) as
> >> consec
> >> from tabla
> >>
> >> En Sql Server 2000 si funciona a la perfeccion; en el campo pdnodoc se

> >> guarda un consecutivo numerico acompañado de una N; ejemplo: 7001N

0 new messages