You are on page 1of 10

Los Tipos De Datos De SQL Server Se Organizan En Las Siguientes Categorías: Numéricos exactos Cadenas de caracteres Unicode Numéricos

aproximados Cadenas binarias Fecha y hora Otros tipos de datos Cadenas de caracteres INT, BIGINT, SMALLINT Y TINYINT Tipos de datos numéricos exactos que utilizan datos enteros. Tipo de datos bigint Intervalo De -2^63 (-9.223.372.036.854.775.808) a 2^63-1 (9.223.372.036.854.775.807) De -2^31 (-2.147.483.648) (2.147.483.647) a Almacenamiento 8 bytes

int

2^31-1 4 bytes

smallint tinyint

De -2^15 (-32.768) a 2^15-1 (32.767) De 0 a 255

2 bytes 1 byte

El tipo de datos int es el principal tipo de datos de valores enteros de SQL Server. El tipo de datos bigint está pensado para utilizarse cuando los valores enteros pueden exceder el intervalo admitido por el tipo de datos int. bigint se encuentra entre smallmoney e int en el gráfico de prioridad de tipo de datos. Las funciones solo devuelven bigint si la expresión de parámetro es un tipo de datos bigint. SQL Server no promueve automáticamente otros tipos de datos enteros (tinyint, smallint e int) en bigint. Cuando se convierten implícitamente enteros en un tipo de datos de caracteres, si el entero es demasiado grande para ajustarse al campo de carácter, SQL Server escribe el carácter ASCII 42, el asterisco (*). Las constantes de enteros mayores que 2.147.483.647 se convierten en el tipo de datos decimal, no en el tipo de datos bigint. En el ejemplo siguiente se muestra que cuando se supera el valor de umbral, el tipo de datos del resultado cambia de int a decimal.

La escala predeterminada es 0. . Cuando se utiliza la precisión máxima. 2147483649 / 2 AS Result2 . Por ejemplo. Precisión 1-9 10-19 20-28 29-38 Bytes de almacenamiento 5 9 13 17 En el caso de los tipos de datos decimal y numeric. La precisión predeterminada es 18. s).0) se consideran tipos de datos diferentes.s] )] Números de precisión y escala fijas. La escala debe ser un valor comprendido entre 0 y p. la constante 12. Por ejemplo. por lo tanto. numeric es funcionalmente equivalente a decimal.10^38 +1 y 10^38 .1. p (precisión) El número total máximo de dígitos decimales que se puede almacenar. con la precisión y escala mínimas necesarias. La precisión debe ser un valor comprendido entre 1 y la precisión máxima de 38.500000 DECIMAL Y NUMERIC Tipos de datos numéricos que tienen precisión y escala fijas.5) y decimal(5. una constante con un separador decimal se convierte automáticamente a un valor de datos numeric. 0 <= s <= p.s] )] y numeric[ (p[ . SQL Server considera cada combinación específica de precisión y escala como un tipo de datos distinto. Result1 Result2 1073741823 1073741824.SELECT 2147483647 / 2 AS Result1. s (escala) El número máximo de dígitos decimales que se puede almacenar a la derecha del separador decimal. En las instrucciones Transact-SQL.decimal(5. decimal [ (p[ . Solo es posible especificar la escala si se ha especificado la precisión. Los tamaños de almacenamiento máximo varían según la precisión.345 se convierte a un valor numeric con una precisión de 5 y una escala de 3. Los sinónimos de ISO paradecimal son dec y dec(p. tanto a la izquierda como a la derecha del separador decimal. El conjunto de resultados es el siguiente. los valores válidos se sitúan entre .

La pérdida de precisión y escala no es suficiente para generar un error.748.337. 2. Use un punto para separar las unidades parciales de moneda. como céntimos. Sin embargo. real. La conversión de valores int. La conversión de los valores float que utilizan la notación científica a decimal o numeric se restringe únicamente a los valores con una precisión de 17 dígitos. Tipo de datos money Intervalo Almacenamiento De -922. 0 o NULL. de las unidades completas de moneda.203. float. SQL Server usa el redondeo cuando convierte un número a un valor decimal o numeric con una precisión y una escala inferiores.203.La conversión de valores decimal o numeric a valores float o real puede provocar alguna pérdida de precisión.477. La conversión a bit promueve cualquier valor distinto de cero a uno.15 puede especificar 2 dólares y 15 centavos. smallint.685. Si una tabla contiene 8 columnas o menos de tipo bit. si la opción SET ARITHABORT está establecida en ON. tinyint. SQL Server genera un error cuando se produce un desbordamiento. éstas se almacenan como 1 byte. .685.money o smallmoney a valores decimal o numeric puede provocar un desbordamiento.477.748.337. se almacenan como 2 bytes. y así sucesivamente.3647 a 4 bytes smallmoney Los tipos de datos money y smallmoney tienen una precisión de una diezmilésima de las unidades monetarias que representan. Estos tipos de datos pueden usar alguno de los siguientes símbolos de moneda. De forma predeterminada. Los valores de cadena TRUE y FALSE se pueden convertir en valores de tipo bit: TRUE se convierte en 1 y FALSE en 0.3648 214.5808 8 bytes a 922. Cualquier valor con una precisión mayor de 17 se redondea a cero. MONEY Y SMALLMONEY Tipos de datos que representan valores monetarios o de moneda.5807 De 214. Motor de base de datos de SQL Server optimiza el almacenamiento de las columnas de tipo bit. Si hay entre 9 y 16 columnas de tipo bit. Por ejemplo. BIT Tipo de datos entero que puede aceptar los valores 1.

SQL Server no almacena ninguna información de moneda asociada con el símbolo.No es necesario incluir los datos de moneda entre comillas simples ('). Es importante recordar que aunque es posible especificar valores monetarios precedidos de un símbolo de moneda. solo almacena el valor numérico. .

18E . Valor del parámetro n 1-24 25-53 Tamaño de almacenamiento 4 bytes 8 bytes Precisión 7 dígitos 15 dígitos El tipo de datos float[(n)] de SQL Server cumple con el estándar ISO para todos los valores de n desde 1 hasta 53. Los datos de coma flotante son aproximados. Tipo de datos float Intervalo Almacenamiento De .3. por tanto. Para obtener más información. . El sinónimo de double precision es el tipo float(53). dicta su precisión y el tamaño de almacenamiento. 0 y 4 Bytes de 1. Cualquier valor con una precisión mayor de 17 se redondea a cero.79E+308 a -2.79E+308 de n. Esto se debe a que STR permite más control sobre el formato. no todos los valores del rango del tipo de datos se pueden representar con exactitud. Si se especifica n.40E + 38 a -1.1. De .40E + 38 real float [ (n) ] Donde n es el número de bits que se utilizan para almacenar la mantisa del número float en notación científica y. Los valores float se truncan cuando se convierten a cualquier tipo de entero. debe ser un valor entre 1 y 53.18E . Cuando convierte de valores float o real a datos de carácter.23E-308. vea STR (Transact-SQL) y Funciones integradas (Transact-SQL).38. suele resultar más útil la función de cadena STR que CAST( ).38 a 3. 0 y Depende del valor de 2. por tanto. La conversión de los valores float que utilizan la notación científica a decimal o numeric se restringe únicamente a los valores con una precisión de 17 dígitos.23E-308 a 1.FLOAT Y REAL Tipos de datos numéricos y aproximados que se utilizan con datos numéricos de coma flotante. El valor predeterminado de n es 53.

Un día 1900-01-01 Este valor se utiliza para la parte de fecha anexada para la conversión implícita de time a datetime2 odatetimeoffset. fijo 1. escala Tamaño de almacenamiento Estructura de almacenamiento Precisión Valor predeterminado Calendario . De 0001-01-01 a 9999-12-31 Del 1 de enero del año 1 después de Cristo al 31 de diciembre de 9999 AAAA es una cifra de cuatro dígitos comprendida entre 0001 y 9999 que representa un año. MM es una cifra de dos dígitos comprendida entre 01 y 12 que representa un mes del año especificado. Gregoriano Formato de literal de cadena predeterminado (se usa para el cliente de nivel inferior) Intervalo Intervalos de elementos Longitud en caracteres Precisión.DATE Define una fecha. que representa un día del mes especificado. DD es una cifra de dos dígitos comprendida entre 01 y 31 dependiendo del mes. vea la sección "Compatibilidad con versiones anteriores de los clientes de niveles inferiores" más adelante. 10 posiciones 10. fecha de almacenes de enteros de 3 bytes. Propiedad Sintaxis Uso Valor date DECLARE @MyDate date CREATE TABLE Table1 ( Column1 date ) AAAA-MM-DD Para obtener más información. 0 3 bytes.

la longitud predeterminada es 1. la longitud predeterminada es 30. n define la longitud de la cadena y debe ser un valor entre 1 y 8. siga estas recomendaciones:    Utilice char cuando los tamaños de las entradas de datos de columna sean coherentes.000 bytes. n define la longitud de la cadena y puede ser un valor entre 1 y 8. max indica que el tamaño máximo de almacenamiento es de 2^31-1 bytes (2 GB).Si usa char o varchar. El tamaño de almacenamiento es de n bytes.000. varchar [ ( n | max ) ] Datos de cadena no Unicode de longitud variable. A los objetos que utilizan char o varchar se les asigna la intercalación predeterminada de la base de datos. El tamaño de almacenamiento es la longitud real de los datos especificados + 2 bytes. Utilice varchar cuando los tamaños de las entradas de datos de columna varíen de forma considerable. El sinónimo de char en ISO es character. Los sinónimos ISO de varchar sonchar varying o character varying. Utilice varchar(max) cuando los tamaños de las entradas de datos de columna varíen de forma considerable y se pudieran superar los 8. a menos que se asigne una intercalación específica mediante la cláusula COLLATE. char [ ( n ) ] Datos de cadena no Unicode de longitud fija.000. Si tiene sitios que admiten varios idiomas. considere el uso de tipos de datos Unicode nchar o nvarchar para reducir al mínimo los problemas de conversión de caracteres. Cuando no se especifica n en una instrucción de definición de datos o declaración de variable. . La intercalación controla la página de códigos utilizada para almacenar los datos de caracteres.Precisión de fracciones de No segundo definida por el usuario Conservación y reconocimiento del ajuste de zona horaria No Reconocimiento del horario de No verano CHAR Y VARCHAR Son tipos de datos de cadena de longitud fija o de longitud variable. Cuando no se especifica n al utilizar las funciones CAST y CONVERT.

Los datos Unicode utilizan el juego de caracteres UNICODE UCS-2. una columna de tipo char definida como NULL se trata como si fuera de tipo varchar. está sujeto a las reglas de truncamiento para la conversión a un tipo de carácter. puede asignar una intercalación específica mediante la cláusulaCOLLATE. Las expresiones de caracteres que se convierten a los tipos de datos money o smallmoney pueden incluir también un separador decimal opcional y un símbolo de dólar ($). por tanto. Si una expresión que no es de carácter se convierte a un tipo de datos de carácter. Si la página de códigos de la intercalación utiliza caracteres de doble byte. el tamaño de almacenamiento sigue siendo de n bytes. Las expresiones de carácter que se convierten a un tipo de datos numeric aproximado pueden incluir una notación exponencial opcional (una e minúscula o una E mayúscula seguida de un signo más (+) o menos (-) opcional y un número).456. text e image se quitarán en una versión futura de Microsoft SQL Server. En cualquiera de los casos. .00). se asigna al valor convertido la intercalación predeterminada de la base de datos actual. Dependiendo de la cadena de caracteres. varchar(max) y varbinary(max) en su lugar.456.00) están permitidos.Los espacios en blanco iniciales se omiten. un separador decimal y un signo más (+) o menos (-) opcional. Vea la sección Ejemplos que aparece más adelante.Si SET ANSI_PADDING es OFF cuando se ejecuta CREATE TABLE o ALTER TABLE. se truncan los valores que son demasiado grandes para el nuevo tipo de datos. TEXT E IMAGE Importante Los tipos de datos ntext. el tamaño de almacenamiento de n bytes puede ser inferior a n caracteres. Cuando se convierten expresiones de caracteres a un tipo de datos de caracteres de un tamaño distinto. Tipos de datos de longitud fija y variable para almacenar valores de gran tamaño con datos de caracteres y binarios Unicode y no Unicode. Utilice nvarchar(max). $123. se asigna la intercalación del valor de entrada al valor convertido. El tipo uniqueidentifier se considera un tipo de carácter para la conversión desde una expresión de caracteres y. Evite su uso en nuevos trabajos de desarrollo y piense en modificar las aplicaciones que los usan actualmente. Cuando una expresión de caracteres se convierte a una expresión de caracteres de un tipo de datos o tamaño distinto (como de char(5) a varchar(5) o de char(20) achar(15)). NTEXT. En la cadena no se permiten los separadores de coma (como el separador de miles en algunas representaciones de 123.Los separadores de coma (por ejemplo. Las expresiones de carácter que se convierten a un tipo de datos numeric exacto se componen de dígitos.

El sinónimo de ANSI SQL paravarbinary es binary varying. ntext o image) a un tipo de datos binary o varbinaryde diferente longitud.647 bytes.647 bytes. Utilice binary cuando los tamaños de las entradas de datos de columna sean coherentes. donde n es un valor que oscila entre 1 y 8. binary. Cuando se convierten a binary o varbinary otros tipos de datos.147. es dos veces la longitud de cadena especificada.741. . varbinary. a continuación.000. los datos se rellenan o se truncan por la izquierda. Cuando se convierte un valor de cualquier tipo a un valor binario de tamaño suficiente y. El tamaño de almacenamiento es la longitud real de los datos especificados + 2 bytes. Use varbinary cuando los tamaños de las entradas de datos de columna varíen considerablemente. Use varbinary(max) cuando las entradas de datos de columna superen los 8. Cuando se convierten datos de un tipo de datos de cadena (char.647).147. binary [ ( n ) ] Datos binarios de longitud fija con una longitud de n bytes.647) bytes. El tamaño de almacenamiento es de n bytes. en bytes.000 bytes. text. Cuando la página de códigos del servidor utiliza caracteres de doble byte.147. SQL Server rellena o trunca los datos de la derecha. el almacenamiento sigue siendo de 2. BINARY Y VARBINARY Tipos de datos binarios de longitud fija o variable.483. El tamaño de almacenamiento.1 (1. El sinónimo de ntext en ISO es national text. max indica que el tamaño máximo de almacenamiento es de 2^31-1 bytes. n puede ser un valor de 1 a 8. Cuando no se especifica el argumento n en una instrucción de definición de datos o de declaración de variable.ntext Datos Unicode de longitud variable con una longitud máxima de cadena de 2^30 .483. Los datos especificados pueden tener una longitud de 0 bytes. El relleno se realiza con ceros hexadecimales.073.483.000.823) bytes. varchar. se convierte de nuevo al tipo original. el espacio de almacenamiento puede ser inferior a 2. nvarchar. La conversión de datos a tipos de datos binary y varbinary es útil si el dato binary es la forma más sencilla de mover datos.147. la longitud predeterminada es 1. Dependiendo de la cadena de caracteres. la longitud predeterminada es 30. varbinary [ ( n | max) ] Datos binarios de longitud variable. nchar. text Datos no Unicode de longitud variable en la página de códigos del servidor y con una longitud máxima de cadena de 2^31-1 (2. Cuando no se especifica ncon la función CAST.483. image Datos binarios de longitud variable desde 0 hasta 2^31-1 (2.

pero si convierte de nuevo el valor binary a un valor entero. Por ejemplo. smallint y tinyint a binary o varbinary. La representación binaria de un valor puede cambiar entre versiones de SQL Server. la siguiente instrucción SELECT muestra que el valor entero 123456 se almacena normalmente como un valor0x0001e240 binario: .el resultado será el mismo valor si ambas conversiones utilizan la misma versión de SQL Server. Puede convertir tipos de datos int. este será distinto del valor entero original si se ha producido un truncamiento.