Mantén la atención ya que en este escrito encontrarás el resultado que buscas.Este artículo ha sido evaluado por nuestros expertos para asegurar la calidad y exactitud de nuestro post.
Solución:
Trate de lanzar su string para flotar antes de convertirlo:
SELECT CONVERT(numeric(16,0), CAST(TOKEN AS FLOAT))
FROM MULTICURRENCY_CHECK
- Mira este violín.
No sé cuál es el formato de esos números en su fuente XML, pero con los datos que proporciona, terminará con 33733, por ejemplo, seguido de un montón de ceros. Si tiene una mayor precisión en su XML, tal vez debería modificar su configuración de importación para mantener esta precisión en lugar de tratar de lidiar con eso en la base de datos.
EDITAR:
Intenta probar tus cadenas con ISNUMERIC
para evitar los errores de conversión que estás recibiendo. Agregar una salida sin procesar de su columna le permitirá verificar qué valor no se convierte (es decir, se convierte a 0).
SELECT TOKEN,
CONVERT(NUMERIC(16, 0), CAST(CASE
WHEN ISNUMERIC(TOKEN) = 1
THEN TOKEN
ELSE 0
END AS FLOAT))
FROM MULTICURRENCY_CHECK