▷【 Comprender el tipo de datos SQL Decimal 】 (2023)

Este artículo tiene como objetivo guiarlo a través del tipo de datos SQL Decimal y su uso con varios ejemplos. También veremos cómo podemos ejercitar este tipo de datos en SQL Server para ayudar a facilitar el trabajo del desarrollador de SQL.

Introducción

Las organizaciones se ocupan de los decimales en el día a día, y estos valores decimales se pueden ver en todas partes en diferentes sectores, ya sea en los bancos, la industria médica, la biometría, las estaciones de servicio, los informes financieros, los deportes y otras cosas. El uso de números enteros (redondeando números decimales) definitivamente facilita el trabajo, pero a menudo conduce a resultados inexactos, especialmente cuando se trata de una gran cantidad de valores y datos cruciales. En tales escenarios, es ideal usar el tipo de datos Sql Decimal en SQL Server para entregar resultados correctos con perfecta precisión.

Se vuelve muy esencial para los desarrolladores de SQL elegir los tipos de datos correctos en la estructura de la tabla mientras diseñan y modelan bases de datos SQL. Avancemos y exploremos el tipo de datos decimal en SQL Server.

Requisito previo

El tipo de datos SQL Decimal se utiliza en SQL Server desde siempre. Puede utilizar cualquier versión de SQL Server instalada (a partir de 2000 o superior) para comprender este tipo de datos. Usaremos SQL Server 2017 en este artículo para fines de demostración. Si no tiene ninguna versión instalada en su sistema y desea practicar contra la versión 2017, descárguela desde aquí .

La sintaxis básica del tipo de datos decimal en SQL Server

Primero, echemos un vistazo a la sintaxis básica del tipo de datos decimales de SQL. Se denota de la siguiente manera:

  • decimal [(p [, s])]

Dónde,

  • p significa Precisión, el número total de dígitos en el valor, es decir, en ambos lados del punto decimal
  • s significa Escala, número de dígitos después del punto decimal

El valor predeterminado de p es 18 y s es 0 y para ambos valores, el mínimo es 1 y el máximo es 38.

En resumen, al definir parámetros en el tipo de datos SQL Decimal, estamos estimando cuántos dígitos tendrá una columna o variable y también el número de dígitos a la derecha del punto decimal.

(Video) Kaggle 30 Days of ML - Day 4 - Python Boolean, Conditionals, IF-ELSE - Learn Python ML in 30 Days

READ Cómo ACTUALIZAR desde una instrucción SELECT en SQL Server

Por ejemplo, decimal (4,2) indica que el número tendrá 2 dígitos antes del punto decimal y 2 dígitos después del punto decimal, algo como esto tiene que ser el valor numérico- ##. ##.

Una cosa importante a tener en cuenta aquí es que el parámetro s (Escala) solo se puede especificar si se especifica p (Precisión). La escala siempre debe ser menor o igual a la precisión.

Definición del tipo de datos decimales de SQL

Trabajemos con una constante matemática muy popular: π, también conocida como Pi, que tiene un valor igual a 3,14159 (22/7 en una fracción). Copie y pegue la consulta siguiente en una nueva ventana de consulta y ejecútela.

1

2

3

4

DECLARE @PiWithNoDecimal DECIMAL(6,) = 3.14159

DECLARE @Piupto5Decimal DECIMAL(6,5) = 3.14159

DECLARE @Piupto1Decimal DECIMAL(3,1) = 3.14159

SELECT @PiWithNoDecimal AS PiWithNoDecimal, @Piupto5Decimal AS Piupto5Decimal, @Piupto1Decimal AS Piupto1Decimal

▷【 Comprender el tipo de datos SQL Decimal 】 (1)

El conjunto de resultados anterior muestra cómo SQL Server trata cada combinación de precisión y escala como un tipo de datos diferente. Como aquí, decimal (6, 0) se comporta de manera diferente a los tipos de datos decimal (6,5) y decimal (3,1) y se consideran tres tipos diferentes. De esta manera podemos ajustar los parámetros en el tipo SQL Decimal para lograr los resultados deseados.

Ahora que sabemos cómo crear este tipo de datos Decimal en SQL Server, explorémoslo con numerosos ejemplos.

Usando SQL Decimal en las Tablas

Creemos rápidamente una nueva tabla, denominada Pacientes, que utilice el tipo de datos decimales para la altura y el peso de las columnas. Insertaremos algunas filas usando una cláusula INSERT como se muestra a continuación para fines de demostración.

1

2

3

4

5

6

7

8

9

10

11

CREATE TABLE dbo.Patients

( Name varchar(10),

Gender varchar(2),

Height decimal (3,2),

Weight decimal (5,2)

)

INSERT INTO PATIENTS VALUES('John','M',6.1,80.4)

INSERT INTO PATIENTS VALUES('Bred','M',5.8,73.7)

INSERT INTO PATIENTS VALUES('Leslie','F',5.3,66.9)

INSERT INTO PATIENTS VALUES('Rebecca','F',5.7,50.2)

INSERT INTO PATIENTS VALUES('Shermas','M',6.5,190.6)

Una vez que los datos se completan en la tabla, podemos consultar estos datos utilizando la instrucción SELECT como se muestra a continuación. Los valores decimales se pueden ver en los atributos de altura y peso.

1

SELECT * FROM dbo.PATIENTS

▷【 Comprender el tipo de datos SQL Decimal 】 (2)

Averigüemos qué sucede si intentamos insertar valores que exceden la precisión especificada o los valores de escala al definir las columnas Altura y Peso. Para esta demostración, insertaremos 2 filas más en esta tabla (que se muestra a continuación).

  1. 1

    INSERT INTO PATIENTS VALUES('Largest','M', '10.9', 88.5)

  2. 1

    INSERT INTO PATIENTS VALUES('Hulk','M', '9.9', 1000.45)

Encuentra el siguiente error que dice error de desbordamiento aritmético y SQL Server terminó las declaraciones.

READ Comprender la instrucción CASE de SQL Server

▷【 Comprender el tipo de datos SQL Decimal 】 (3)

Vayamos a la raíz de este problema:

  • Altura decimal (3, 2) significa que el valor puede tener 3 dígitos en total y 2 dígitos a la derecha del punto decimal. En la primera línea del código anterior, el valor 10,9 (considerado como 10,90 = 4 dígitos en total) excede el rango especificado (3, 2) y provoca el desbordamiento
  • Peso decimal (5,2) significa que el número total de dígitos no puede exceder los 5 y se pueden colocar 2 dígitos a la derecha del decimal. Sin embargo, el valor 1000.45 en la segunda línea de código anterior excede el rango especificado de (5, 2) ya que significa 6 dígitos en total y arroja un error de desbordamiento.
  • Nota rápida : en el mensaje de error anterior, si lo ha notado, se indica «tipo de datos numérico» en lugar del tipo de datos decimal, la razón es que el tipo de datos decimal y numérico son exactamente iguales, ambos son tipos de datos de precisión fija y se puede usar indistintamente

Resolviendo el error

Una de las soluciones más fáciles es aumentar el nivel de precisión de las columnas para almacenar números más grandes. Podemos alterar el tipo de datos de las columnas sin quitar la tabla o columna con el siguiente código.

1

2

ALTER TABLE dbo.Patients ALTER COLUMN Height decimal(4,2)

ALTER TABLE dbo.Patients ALTER COLUMN Weight decimal (6,2)

Una vez modificado, ejecute las consultas de inserción para insertar estas filas en la tabla.

READ Calcule el percentil de SQL usando la función PERCENT_RANK en SQL Server

▷【 Comprender el tipo de datos SQL Decimal 】 (4)

Podemos ver las filas que se agregan a la tabla.

▷【 Comprender el tipo de datos SQL Decimal 】 (5)

Consideraciones de almacenamiento con el tipo de datos decimal en SQL Server

El tipo de datos SQL Decimal requiere los siguientes bytes de almacenamiento para la precisión especificada que Microsoft proporciona a continuación:

Precisión

Almacenamiento (bytes)

1 – 9

5

10 – 19

9

20 – 28

13

29 – 38

17

El consumo de espacio del tipo de datos SQL Decimal se basa en la definición de la columna y no en el tamaño del valor que se le asigna. Por ejemplo, Decimal (12, 4) con un valor de 888.888 toma 9 bytes en el disco y el valor Decimal (22, 2) de 9999.99 consume 13 bytes en el disco. Es por eso que este tipo de datos se incluye en columnas de longitud fija.

Como desarrollador de SQL, siempre trato de usar el tipo de datos SQL Decimal como decimal (9, 2) que consume la menor cantidad de almacenamiento, 5 bytes en el disco y ofrece un mejor rendimiento.

Conclusión

Espero que este artículo proporcione un enfoque comprensible sobre cómo usar el tipo de datos SQL Decimal. Asegúrese siempre de que la precisión de la variable decimal o numérica especificada sea suficiente para acomodar los valores asignados. Además, observamos cómo la selección del tipo de datos adecuado ayuda a los desarrolladores de SQL a ahorrar espacio en disco.

En caso de tener alguna pregunta, no dude en preguntar en la sección de comentarios a continuación.

Para continuar su viaje con SQL Server y los tipos de datos que se utilizan en él, le recomendaría ir a través de los enlaces a continuación.

  • Tipos de datos de SQL espacial en SQL Server
  • Métodos de conversión de tipos de datos de SQL Server y comparación de rendimiento
  • Comprender el tipo de datos GUID en SQL Server
  • Un tutorial paso a paso de SQL Inner Join

FAQs

How do I get decimal answers in SQL? ›

Use the CAST() function to convert an integer to a DECIMAL data type. This function takes an expression or a column name as the argument, followed by the keyword AS and the new data type. In our example, we converted an integer (12) to a decimal value (12.00).

How can I get value to 2 decimal places in SQL? ›

The ROUND() function rounds a number to a specified number of decimal places.

How do I limit the number of decimal places in SQL? ›

If you'd like to round a floating-point number to a specific number of decimal places in SQL, use the ROUND function. The first argument of this function is the column whose values you want to round; the second argument is optional and denotes the number of places to which you want to round.

What is the decimal limit in SQL? ›

In SQL Server, the default maximum precision of numeric and decimal data types is 38. In earlier versions of SQL Server, the default maximum is 28.

How do you give an answer as a decimal? ›

The easiest way to convert a fraction to a decimal is to divide the numerator (the top of the fraction) by the denominator (the bottom of the fraction) by using a calculator. The resulting answer will be the value of the fraction expressed as a decimal number.

How do you check the answer to a decimal? ›

To check the answer to a decimal multiplication problem, you can divide the product with one of the decimal numbers. If the answer is equal to the other number, then your answer is correct.

How to format decimals in SQL? ›

In standard SQL, the syntax DECIMAL( M ) is equivalent to DECIMAL( M ,0) . Similarly, the syntax DECIMAL is equivalent to DECIMAL( M ,0) , where the implementation is permitted to decide the value of M . MySQL supports both of these variant forms of DECIMAL syntax. The default value of M is 10.

How do you fix 2 decimal places? ›

Rounding a decimal number to two decimal places is the same as rounding it to the hundredths place, which is the second place to the right of the decimal point. For example, 2.83620364 can be round to two decimal places as 2.84, and 0.7035 can be round to two decimal places as 0.70.

How do I extract decimal parts in SQL? ›

X - TRUNC(X), works for negatives too. It would give you the decimal part of the number, as a double, not an integer.

How do I select decimal places in SQL? ›

The ROUND() function rounds a number to a specified number of decimal places. Note: See also the FLOOR(), CEIL(), CEILING(), and TRUNCATE() functions.

How do you check if a column has decimal values SQL? ›

Checks whether a value is a DECIMAL. The IS_DECIMAL function returns true for numbers that are not floating points.

How does decimal function work in SQL? ›

In Transact-SQL statements, a constant with a decimal point is automatically converted into a numeric data value, using the minimum precision and scale necessary. For example, the constant 12.345 is converted into a numeric value with a precision of 5 and a scale of 3.

References

Top Articles
Latest Posts
Article information

Author: Rob Wisoky

Last Updated: 25/05/2023

Views: 6611

Rating: 4.8 / 5 (68 voted)

Reviews: 83% of readers found this page helpful

Author information

Name: Rob Wisoky

Birthday: 1994-09-30

Address: 5789 Michel Vista, West Domenic, OR 80464-9452

Phone: +97313824072371

Job: Education Orchestrator

Hobby: Lockpicking, Crocheting, Baton twirling, Video gaming, Jogging, Whittling, Model building

Introduction: My name is Rob Wisoky, I am a smiling, helpful, encouraging, zealous, energetic, faithful, fantastic person who loves writing and wants to share my knowledge and understanding with you.