Este tema aún no ha recibido ninguna valoración - Valorar este tema

Usar funciones matemáticas (Transact-SQL)

Una función matemática realiza una operación matemática en expresiones numéricas y devuelve el resultado de la operación. Las funciones matemáticas operan sobre datos numéricos suministrados por el sistema SQL Server: decimal, integer, float, real, money, smallmoney, smallint y tinyint. De manera predeterminada, la precisión de las operaciones integradas para el tipo de datos float es de seis decimales.

De forma predeterminada, un número pasado a una función matemática será interpretado como un tipo de datos decimal. Se puede usar las funciones CAST o CONVERT para cambiar el tipo de datos a otro distinto, por ejemplo, float. Por ejemplo, el valor devuelto por la función FLOOR tiene el tipo de datos del valor de entrada. La entrada de la siguiente instrucción SELECT es un decimal. FLOOR devuelve 123. Éste es un valor decimal.

SELECT FLOOR(123.45);

---------------------
123

(1 row(s) affected)

Sin embargo, el siguiente ejemplo utiliza un valor float y FLOOR devuelve un valor float:

SELECT FLOOR (CONVERT (float, 123.45));

-------------------------------------
123.000000

(1 row(s) affected)

Cuando el resultado float o real de una función matemática es demasiado pequeño para mostrarse, se produce un error de desbordamiento negativo de punto flotante. El resultado devuelto será 0,0 y no se mostrará ningún mensaje de error. Por ejemplo, el cálculo matemático de 2 elevado a la potencia -100,0 daría el resultado 0,0.

Los errores de dominio se producen cuando el valor proporcionado en la función matemática no es válido. Por ejemplo, los valores especificados para la función ASIN deben ser de -1,00 a 1,00. Si se especifica el valor -2, por ejemplo, se produce un error de dominio.

Los errores de intervalo se producen cuando el valor especificado se encuentra fuera de los valores permitidos. Por ejemplo, POWER(10,0, 400) excede el valor máximo (~2e+308) del intervalo para el tipo de datos float y POWER(-10,0, 401) es menor que el valor mínimo (~ -2e+308) del intervalo para el tipo de datos float.

En la siguiente tabla se muestran funciones matemáticas que producen un error de dominio o de intervalo.

Función matemática

Resultado

SQRT(-1)

Error de dominio.

POWER(10,0, 400)

Error de desbordamiento aritmético.

POWER(10,0, -400)

Valor 0,0 (desbordamiento negativo de punto flotante).

Se proporcionan capturas de error para controlar los errores de dominio o de intervalo de estas funciones. Puede utilizar lo siguiente:

  • SET ARITHABORT ON. Esta opción termina la consulta y finaliza la transacción definida por el usuario. La configuración de SET ARITHABORT suplanta la configuración de SET ANSI_WARNINGS.

  • SET ANSI_WARNINGS ON. Esta opción detiene el comando.

  • SET ARITHIGNORE ON. Esta opción impide la visualización de un mensaje de advertencia. Tanto la configuración de SET ARITHABORT como de SET ANSI_WARNINGS suplantan la configuración de SET ARITHIGNORE.

Si no se ha establecido ninguna de estas opciones, SQL Server devuelve NULL y muestra un mensaje de advertencia después de ejecutar la consulta. Para obtener más información:

SET ARITHABORT (Transact-SQL)

SET ANSI_WARNINGS (Transact-SQL)

SET ARITHIGNORE (Transact-SQL)

La conversión interna a float puede provocar la pérdida de precisión si se usa alguno de los tipos de datos money o numeric.

¿Te ha resultado útil?
(Caracteres restantes: 1500)

Adiciones de comunidad

AGREGAR
© 2013 Microsoft. Reservados todos los derechos.