char y varchar (Transact-SQL)

Son tipos de datos de caracteres que tienen longitud fija o variable.

  • char [ ( n ) ]
    Datos de caracteres no Unicode de longitud fija, con una longitud de n bytes. n debe ser un valor entre 1 y 8.000. El tamaño de almacenamiento es n bytes. El sinónimo de char en SQL-2003 es character.
  • varchar [ ( n | max ) ]
    Datos de caracteres no Unicode de longitud variable. n puede ser un valor entre 1 y 8.000. max indica que el tamaño de almacenamiento máximo es de 2^31-1 bytes. El tamaño de almacenamiento es la longitud real de los datos especificados + 2 bytes. Los datos especificados pueden tener una longitud de 0 caracteres. Los sinónimos de varchar en SQL-2003 son char varying o character varying.

Notas

Cuando no se especifica n en una instrucción de definición de datos o de declaración de variable, la longitud predeterminada es 1. Cuando no se especifica n al utilizar las funciones CAST y CONVERT, la longitud predeterminada es 30.

A los objetos que utilizan char o varchar se les asigna la intercalación predeterminada de la base de datos, a menos que se asigne una intercalación específica mediante la cláusula COLLATE. La intercalación controla la página de códigos utilizada para almacenar los datos de caracteres.

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. Si usa char o varchar, siga estas recomendaciones:

  • Utilice char cuando los tamaños de las entradas de datos de columna sean coherentes.
  • Utilice varchar cuando los tamaños de las entradas de datos de columna varíen de forma considerable.
  • 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.000 bytes.

Si SET ANSI_PADDING es OFF cuando se ejecuta CREATE TABLE o ALTER TABLE, una columna de tipo char definida como NULL se trata como si fuera de tipo varchar.

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. Dependiendo de la cadena de caracteres, el tamaño de almacenamiento de n bytes puede ser inferior a n caracteres.

Ejemplos

A. Mostrar el valor predeterminado de n cuando se utiliza en una declaración de variable.

En el ejemplo siguiente se muestra que el valor predeterminado de n es 1 para los tipos de datos char y varchar cuando se utilizan en una declaración de variable.

DECLARE @myVariable AS varchar
DECLARE @myNextVariable AS char
SET @myVariable = 'abc'
SET @myNextVariable = 'abc'
--The following returns 1
SELECT DATALENGTH(@myVariable), DATALENGTH(@myNextVariable);
GO

B. Mostrar el valor predeterminado de n cuando varchar se utiliza con CAST y CONVERT.

En el ejemplo siguiente se muestra que el valor predeterminado de n es 30 cuando se utiliza el tipo de datos char o varchar con las funciones CAST y CONVERT.

DECLARE @myVariable AS varchar(40)
SET @myVariable = 'This string is longer than thirty characters'
SELECT CAST(@myVariable AS varchar)
SELECT DATALENGTH(CAST(@myVariable AS varchar)) AS 'VarcharDefaultLength';
SELECT CONVERT(char, @myVariable)
SELECT DATALENGTH(CONVERT(char, @myVariable)) AS 'VarcharDefaultLength';

Vea también

Referencia

nchar y nvarchar (Transact-SQL)
CAST y CONVERT (Transact-SQL)
COLLATE (Transact-SQL)
Tipos de datos (Transact-SQL)
sp_dbcmptlevel (Transact-SQL)

Otros recursos

Seleccionar intercalaciones
Conversiones de tipos de datos (motor de base de datos)
Usar datos char y varchar
Usar datos Unicode
Estimar el tamaño de una base de datos

Ayuda e información

Obtener ayuda sobre SQL Server 2005