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.
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
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