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

16/10/2008 - 20:33 por Marcia | Informe spam
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
 

Leer las respuestas

#1 diemagan
04/08/2013 - 23:58 | Informe spam
Marcia escribió el 16/10/2008 20:33 :
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


sucede que el campo que queres convertir seguramente tiene caracteres del tipo no numericos y entonces es imposible convertirlos. ¿como te das cuenta? hace un select de ese campo ordenando descendente, de esta manera te quedaran las letras o espacios primero y luego los numeros asi te daras cuenta cuales son los registros que no se pueden convertir.-

lo importante que tenes que saber es que : si todos los datos cargados en ese campo son del tipo numero no tendras errores para convertir

Preguntas similares