Saltar al contenido

Error de desbordamiento aritmético al convertir varchar a tipo de datos numérico. ’10’

Bienvenido a nuestra comunidad, ahora hallarás la resolución a lo que andabas buscando.

Solución:

Esto genera un desbordamiento aritmético porque está tratando de convertir implícitamente el Val columna a un NUMÉRICO (3,2), que naturalmente se desbordará en un valor de 2 dígitos como 10.

Está usando NUMERIC(3,2) como el tipo y tamaño de destino porque ese es el número más pequeño que 9.00 parece encajar.

La solución, por supuesto, es usar CASTing explícito en lugar de hacerlo implícitamente.

Desde BOL:

En las instrucciones Transact-SQL, una constante con un punto decimal se convierte automáticamente en un valor de datos numéricos, utilizando la precisión y la escala mínimas necesarias. Por ejemplo, la constante 12,345 se convierte en un valor numérico con una precisión de 5 y una escala de 3.

Eso significa que tu constante 9.00 tendrá una precisión de 1 y una escala de 0 una precisión de 3 y una escala de 2, por lo que no puede almacenar el valor 10que necesita una precisión mínima de 2 + scale.

Tendrás que envolver el IntsOnly.Val con un CAST o CONVERT para especificar la precisión y la escala correctas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *