Tipos de datos en SQL

DECIMAL y NUMÉRICO

Números decimales de escala y precisión fija. DECIMALNUMERIC son funcionalmente equivalentes.

Sintaxis:

DECIMAL ( precision [ , scale] )
NUMERIC ( precision [ , scale] )

Ejemplos:

SELECT CAST(123 AS DECIMAL(5,2)) --returns 123.00
SELECT CAST(12345.12 AS NUMERIC(10,5)) --returns 12345.12000

FLOTANTE y REAL

Tipos de datos de números aproximados para usar con datos numéricos de coma flotante.

SELECT CAST( PI() AS FLOAT) --returns 3.14159265358979
SELECT CAST( PI() AS REAL) --returns 3.141593

Enteros

Tipos de datos de números exactos que utilizan datos enteros.

Tipo de datosRangoAlmacenamiento
bigint-2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807)8 Bytes
int-2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647)4 Bytes
smallint-2^15 (-32,768) to 2^15-1 (32,767)2 Bytes
tinyint0 to 2551 Byte

MONEY y SMALLMONEY

Tipos de datos que representan valores monetarios o de moneda.

Tipo de datosRangoAlmacenamiento
money-922,337,203,685,477.5808 to 922,337,203,685,477.58078 bytes
smallmoney-214,748.3648 to 214,748.36474 bytes

BINARIO y VARBINARIO

Tipos de datos binarios de longitud fija o longitud variable.

Sintaxis:

BINARY [ ( n_bytes ) ]
VARBINARY [ ( n_bytes | max ) ]

n_bytes puede ser cualquier número de 1 a 8000 bytes. max indica que el espacio de almacenamiento máximo es 2^31-1.

Ejemplos:

SELECT CAST(12345 AS BINARY(10)) -- 0x00000000000000003039
SELECT CAST(12345 AS VARBINARY(10)) -- 0x00003039

CHAR y VARCHAR

Cadena de tipos de datos de longitud fija o longitud variable.

Sintaxis:

CHAR [ ( n_chars ) ]
VARCHAR [ ( n_chars ) ]

Ejemplos:

SELECT CAST('ABC' AS CHAR(10)) -- 'ABC       ' (padded with spaces on the right)
SELECT CAST('ABC' AS VARCHAR(10)) -- 'ABC' (no padding due to variable character)
SELECT CAST('ABCDEFGHIJKLMNOPQRSTUVWXYZ' AS CHAR(10))  -- 'ABCDEFGHIJ' (truncated to 10 characters)

NCHAR y NVARCHAR

Tipos de datos de cadena UNICODE de longitud fija o longitud variable.

Sintaxis:

NCHAR [ ( n_chars ) ]
NVARCHAR [ ( n_chars | MAX ) ]

Úselo MAX para cadenas muy largas que pueden exceder los 8000 caracteres.

IDENTIFICADOR ÚNICO

Un GUID/UUID de 16 bytes.

DECLARE @GUID UNIQUEIDENTIFIER = NEWID(); 
SELECT @GUID -- 'E28B3BD9-9174-41A9-8508-899A78A33540'
DECLARE @bad_GUID_string VARCHAR(100) = 'E28B3BD9-9174-41A9-8508-899A78A33540_foobarbaz'
SELECT 
    @bad_GUID_string,   -- 'E28B3BD9-9174-41A9-8508-899A78A33540_foobarbaz'
    CONVERT(UNIQUEIDENTIFIER, @bad_GUID_string) -- 'E28B3BD9-9174-41A9-8508-899A78A33540'