convertir varchar a integer Sql Server 2008

08/04/2009 - 17:13 por charles | Informe spam
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.

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
08/04/2009 - 17:36 | Informe spam
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

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.



Respuesta Responder a este mensaje
#2 charles
08/04/2009 - 18:06 | Informe spam
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" escribió en
el mensaje news:

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

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.



Respuesta Responder a este mensaje
#3 Alejandro Mesa
08/04/2009 - 18:47 | Informe spam
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" escribió en
el mensaje news:
>
> 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
>>
>> 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.
>>
>>
>>



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