Usar datos char y varchar

Los tipos de datos char y varchar almacenan datos compuestos de:

  • Caracteres en mayúsculas y minúsculas, como, por ejemplo, a, b y C.

  • Números, como 1, 2 y 3.

  • Caracteres especiales, como el signo de arroba (@), "y" comercial (&) y el signo de exclamación de cierre (!).

Los datos char o varchar pueden consistir en un único carácter o una cadena con un máximo de 8.000 caracteres para los datos char y de hasta 2^31 caracteres para los datos varchar. Los tipos de datos varchar pueden adoptar dos formas. Los datos varchar pueden tener una longitud máxima de caracteres especificada; por ejemplo, varchar(6) indica que este tipo de datos puede almacenar un máximo de seis caracteres; o bien puede tener la forma varchar(max) que aumenta hasta 2^31 el número máximo de caracteres que se pueden almacenar en este tipo de datos. Para obtener más información acerca de varchar(max), vea Usar tipos de datos de valores grandes.

Cada valor de datos de char y varchar tiene una intercalación. Las intercalaciones definen atributos como los patrones de bits que se utilizan para representar cada carácter, las reglas de comparación, la distinción entre mayúsculas y minúsculas y la distinción de los acentos. Cada base de datos tiene una intercalación predeterminada. Cuando se define una columna o se especifica una constante, se les asigna la intercalación predeterminada de la base de datos, a menos que les asigne una intercalación específica mediante la cláusula COLLATE. Cuando se combinan o se comparan dos valores char o varchar que tienen intercalaciones distintas, las reglas de prioridad de intercalación determinan la intercalación que se utiliza para la operación.

Las constantes de caracteres deben incluirse entre comillas simples (’) o comillas dobles ("). Se recomienda incluir entre comillas simples una constante de caracteres. Cuando la opción QUOTED IDENTIFIER es ON, algunas veces no se permite incluir una constante de caracteres entre comillas dobles.

A continuación se muestra un ejemplo de Transact-SQL donde se asigna un valor a una variable de caracteres.

DECLARE @MyCharVar CHAR(25)
SET @MyCharVar = 'Ricardo Adocicados'

Cuando se usan comillas simples para delimitar una constante de caracteres que contenga una comilla simple incrustada, utilice dos comillas simples para representar la comilla simple incrustada. Por ejemplo:

SET @MyCharVar = 'O''Leary'

Si los datos que se van a almacenar tienen una longitud mayor que el número de caracteres permitido, se truncan los datos. Por ejemplo, si una columna se define como char(10) y en la columna se almacena el valor "Ésta es una cadena de caracteres realmente larga", SQL Server trunca la cadena de caracteres a "Ésta es un".

El tipo de datos char es un tipo de datos de longitud fija cuando se especifica la cláusula NOT NULL. Si en una columna char NOT NULL se inserta un valor más corto que la longitud de la columna, el valor se rellena a la derecha con espacios en blanco hasta completar el tamaño de la columna. Por ejemplo, si una columna se define como char(10) y el dato que se va a almacenar es "música", SQL Server almacena este dato como "música____" donde "_" indica un espacio en blanco.

Si ANSI_PADDING es ON al crear una columna char NULL, se comporta como una columna char NOT NULL: los valores se rellenan a la derecha hasta completar el tamaño de la columna. Si ANSI_PADDING es OFF cuando se crea la columna char NULL, se comporta igual que una columna varchar con ANSI_PADDING establecido en OFF: los espacios en blanco a la derecha se truncan.

El tipo de datos varchar es de longitud variable. Los valores más cortos que el tamaño de la columna no se rellenan a la derecha para completar el tamaño de la misma. Si la opción ANSI_PADDING era OFF cuando se creó la columna, los espacios en blanco a la derecha se truncan a partir de los valores de caracteres almacenados en la columna. Si ANSI_PADDING era ON cuando se creó la columna, los espacios en blanco a la derecha no se truncan.

La forma en que se interpretan los patrones de bits almacenados en los bytes de una cadena de caracteres se basa en la página de código de Microsoft SQL Server que se ha especificado durante la instalación. Un objeto char o varchar puede contener cualquier carácter de la página de código de SQL Server. .

Las aplicaciones que usan los controladores ODBC de SQL Server de SQL Server versión 6.5 o anterior sólo admiten un máximo de 255 bytes de datos de caracteres. Si estas aplicaciones intentan recuperar parámetros de caracteres de SQL Server versión 7.0 o posterior, o bien columnas de conjuntos de resultados que contengan más de 255 bytes de datos, los datos de caracteres se truncarán a 255 bytes.