Tenemos un SQL que realiza una función CAST (para FLOTAR) en ColumnA. El SQL tiene un filtro que al final filtrará indirectamente aquellas filas que tienen valores no numéricos en ColumnA. Sin embargo, debido a lo que creo que se debe a la ejecución de partes del SQL en paralelo, creo que CAST incluso se aplica a las filas que se filtran y esto hace que el SQL falle "no se puede emitir valor como flotante ... "incapaz de emitir valor como float
sé que si me quedo con un proc añadiendo la sugerencia de consulta
OPTION (MAXDOP 1)
que el SQL se ejecuta como se esperaba. Sospecho que al ejecutar en 1 proc, se fuerza la aplicación del filtro para eliminar la fila con los valores no numéricos en la columna A, de modo que la CASTING de sus valores tenga éxito. También he encontrado que el uso de la sugerencia de consulta
OPTION (FORCE ORDER)
corrige el problema, estoy asumiendo becausethis también asegura que el filtro se aplica por primera vez y me da mucho mejor rendimiento de las consultas que se ejecutan en un cilindro.
Me estoy inclinando hacia torwards para solucionar el problema usando la segunda opción. Si tengo ideas erróneas sobre lo que está sucediendo aquí o si alguien quisiera exponer mi comprensión general o hacer una recomendación, lo agradecería.
estoy corriendo en
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1720.0 (X64) jul 12 2010 01:34:59 Derechos de autor (c) Microsoft Corporation Enterprise Edition (64- bits) en Windows NT 5.2 (Build 3790: Service pack 2)
una ocurrencia tardía:
parece que sería bueno es T-SQL tenía las siguientes funciones para comprobar si una cadena podía ser conve conectado a un tipo de datos particular.
IsFloat IsNumeric EsEntero etc
soy realmente molesto por el número de columnas de todo tipo de datos que encuentro en nuestra base de datos que se definen como varchar (255). ¡Creo que la solución es "no hacer eso!"
¿Puede mostrar el SQL? – MatBailie
Nos está pidiendo que ayudemos a reparar su automóvil sin ver el automóvil. Muéstranos el auto por favor. – JNK
T-SQL tiene IsNumeric – MatBailie