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

Error: "Error al convertir el tipo de datos varchar a bigint"

234 views
Skip to first unread message

Marcia

unread,
Oct 16, 2008, 2:33:06 PM10/16/08
to
Hola, soy novata en la utilización de SQL Server 2005 y me encuentro con un
problema. Tengo la siguiente consulta:
SELECT
img.serie_documental,img.campo1,img.campo2,img.campo3,img.campo4,img.campo5,img.campo6,img.campo7,img.campo8,
img.campo9, img.campo10, img.campo11, img.campo12, img.campo13, img.campo14,
img.campo15
FROM lote AS l INNER JOIN imagen AS img ON l.id_lote = img.id_lote INNER
JOIN indiceclave AS indc ON img.id_indiceclave = indc.id_indiceclave
WHERE UPPER(indc.proyecto) = UPPER('adt')
AND UPPER(indc.serie_documental) = UPPER('adt_remitos') AND CAST(img.campo2
AS BIGINT)>190000
GROUP BY
img.serie_documental,img.campo1,img.campo2,img.campo3,img.campo4,img.campo5,img.campo6,img.campo7,img.campo8,
img.campo9,img.campo10,img.campo11,img.campo12,img.campo13,img.campo14,img.campo15

que me está tirando el error que incorporé en el subject. Al principio creí
que me iba de los límites de longitud del tipo de datos BIGINT pero
consultando en internet me di cuenta que no es así. Creo que el error se
encuentra en CAST(img.campo2 AS BIGINT)>190000 ... img.campo2 es de tipo
varchar(100) que lo quiero convertir a BIGINT para poder hacer esa
comparación. Estuve probando y si reemplazo esa conversión por
CAST(img.campo1 AS BIGINT)<15 donde img.campo1 es un varchar(100) funciona
sin problemas.
Alguien tiene idea de qué puede ser?
Muchas gracias de antemano. Saludos

Alejandro Mesa

unread,
Oct 16, 2008, 2:44:00 PM10/16/08
to
Marcia,

El error es claro, existe algun valor en la columna img.campo2 que no se
puede convertir a bigint.

Trata:

select *
from imagen
where isnumeric(campo2) = 0
go

O quizas el valor en [campo2] es mayor al mayor bigint posible.

select *
from imagen
where cast(campo2 as numeric(38, 0)) > 190000
go


AMB

Marcia

unread,
Oct 16, 2008, 3:06:46 PM10/16/08
to
Alejandro,
Estuve explorando los valores que contiene el campo2 y van entre 180000 al
195900. La consulta funcionó con esta opción que planteaste:

cast(campo2 as numeric(38, 0)) > 190000
Muchas gracias y saludos
0 new messages