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

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
16/10/2008 - 20:44 | Informe spam
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" wrote:

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
Respuesta Responder a este mensaje
#2 Marcia
16/10/2008 - 21:06 | Informe spam
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

"Alejandro Mesa" wrote:

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" wrote:

> 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
Respuesta Responder a este mensaje
#3 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
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida