COLLATE (Transact-SQL)COLLATE (Transact-SQL)

SE APLICA A: síSQL Server síAzure SQL Database síAzure Synapse Analytics (SQL DW) síAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

Define una intercalación de una base de datos o una columna de tabla, o una operación de conversión de intercalación cuando se aplica a una expresión de cadena de caracteres.Defines a collation of a database or table column, or a collation cast operation when applied to character string expression. El nombre de intercalación puede ser un nombre de intercalación de Windows o un nombre de intercalación de SQL.Collation name can be either a Windows collation name or a SQL collation name. Si no se especifica durante la creación de la base de datos, a esta se le asigna la intercalación predeterminada de la instancia de SQL ServerSQL Server.If not specified during database creation, the database is assigned the default collation of the instance of SQL ServerSQL Server. Si no se especifica durante la creación de la columna de tabla, a la columna se le asigna la intercalación predeterminada de la base de datos.If not specified during table column creation, the column is assigned the default collation of the database.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

COLLATE { <collation_name> | database_default }
<collation_name> :: =
    { Windows_collation_name } | { SQL_collation_name }

ArgumentosArguments

collation_name Es el nombre de la intercalación que se va a aplicar a la expresión, definición de columna o definición de base de datos.collation_name Is the name of the collation to be applied to the expression, column definition, or database definition. collation_name solamente puede ser un Windows_collation_name o un SQL_collation_name especificado.collation_name can be only a specified Windows_collation_name or a SQL_collation_name. collation_name debe ser un valor literal.collation_name must be a literal value. collation_name no se puede representar con una variable ni una expresión.collation_name cannot be represented by a variable or expression.

Windows_collation_name es el nombre de intercalación de un nombre de intercalación de Windows.Windows_collation_name is the collation name for a Windows Collation Name.

SQL_collation_name es el nombre de intercalación de un nombre de intercalación de SQL Server.SQL_collation_name is the collation name for a SQL Server Collation Name.

database_default Hace que la cláusula COLLATE herede la intercalación de la base de datos actual.database_default Causes the COLLATE clause to inherit the collation of the current database.

NotasRemarks

La cláusula COLLATE se puede especificar en varios niveles.The COLLATE clause can be specified at several levels. Entre ellas, figuran:These include the following:

  1. Crear o modificar una base de datos.Creating or altering a database.

    Puede usar la cláusula COLLATE de la instrucción CREATE DATABASE o ALTER DATABASE para especificar la intercalación predeterminada de la base de datos.You can use the COLLATE clause of the CREATE DATABASE or ALTER DATABASE statement to specify the default collation of the database. También puede especificar una intercalación al crear una base de datos utilizando SQL Server Management StudioSQL Server Management Studio.You can also specify a collation when you create a database using SQL Server Management StudioSQL Server Management Studio. Si no especifica ninguna intercalación, se asigna a la base de datos la intercalación predeterminada de la instancia de SQL ServerSQL Server.If you do not specify a collation, the database is assigned the default collation of the instance of SQL ServerSQL Server.

    Nota

    Las intercalaciones solo Unicode de Windows se pueden usar únicamente con la cláusula COLLATE para aplicar intercalaciones a los tipos de datos nchar, nvarchar y ntext de datos de nivel de columna y nivel de expresión; no se pueden usar con la cláusula COLLATE para definir ni cambiar la intercalación de una instancia de base de datos o servidor.Windows Unicode-only collations can only be used with the COLLATE clause to apply collations to the nchar, nvarchar, and ntext data types on column-level and expression-level data; these cannot be used with the COLLATE clause to define or change the collation of a database or server instance.

  2. Crear o modificar una columna de una tabla.Creating or altering a table column.

    Puede especificar intercalaciones para cada columna de cadena de caracteres mediante la cláusula COLLATE de la instrucción CREATE TABLE o ALTER TABLE.You can specify collations for each character string column using the COLLATE clause of the CREATE TABLE or ALTER TABLE statement. También puede especificar una intercalación al crear una tabla utilizando SQL Server Management StudioSQL Server Management Studio.You can also specify a collation when you create a table using SQL Server Management StudioSQL Server Management Studio. Si no especifica ninguna intercalación, se asigna a la columna la intercalación predeterminada de la base de datos.If you do not specify a collation, the column is assigned the default collation of the database.

    También puede usar la opción database_default de la cláusula COLLATE para especificar que una columna de una tabla temporal use la intercalación predeterminada de la base de datos de usuario actual para la conexión en lugar de usar tempdb.You can also use the database_default option in the COLLATE clause to specify that a column in a temporary table use the collation default of the current user database for the connection instead of tempdb.

  3. Convertir la intercalación de una expresión.Casting the collation of an expression.

    Puede utilizar la cláusula COLLATE para aplicar una expresión de caracteres a una intercalación concreta.You can use the COLLATE clause to apply a character expression to a certain collation. La intercalación predeterminada de la base de datos actual se asigna a los literales y las variables de carácter.Character literals and variables are assigned the default collation of the current database. La intercalación de definición de la columna se asigna a las referencias de columna.Column references are assigned the definition collation of the column.

La intercalación de un identificador depende del nivel en que está definido.The collation of an identifier depends on the level at which it is defined. Se asigna a los identificadores de objetos de instancia, como los inicios de sesión y los nombres de base de datos, la intercalación predeterminada de la instancia.Identifiers of instance-level objects, such as logins and database names, are assigned the default collation of the instance. Se asigna a los identificadores de objetos de una base de datos, como nombres de tablas, vistas y columnas, la intercalación predeterminada de la base de datos.Identifiers of objects within a database, such as tables, views, and column names, are assigned the default collation of the database. Por ejemplo, es posible crear dos tablas con nombres que solo se diferencian en las mayúsculas en una base de datos con intercalación que distinga entre mayúsculas y minúsculas, pero no se pueden crear en una base de datos con una intercalación que no distinga entre mayúsculas y minúsculas.For example, two tables with names different only in case may be created in a database with case-sensitive collation, but may not be created in a database with case-insensitive collation. Para obtener más información, vea Database Identifiers.For more information, see Database Identifiers.

Las variables, etiquetas GOTO, procedimientos almacenados temporales y tablas temporales pueden crearse cuando se asocia el contexto de conexión a una base de datos y, a continuación, se les hace referencia cuando se ha cambiado el contexto a otra base de datos.Variables, GOTO labels, temporary stored procedures, and temporary tables can be created when the connection context is associated with one database, and then referenced when the context has been switched to another database. Los identificadores para variables, etiquetas GOTO, procedimientos almacenados temporales y tablas temporales se encuentran en la intercalación predeterminada de la instancia de servidor.The identifiers for variables, GOTO labels, temporary stored procedures, and temporary tables are in the default collation of the server instance.

La cláusula COLLATE se puede aplicar únicamente a los tipos de datos char, varchar, text, nchar, nvarchar y ntext.The COLLATE clause can be applied only for the char, varchar, text, nchar, nvarchar, and ntext data types.

COLLATE usa collate_name para hacer referencia al nombre de la intercalación de SQL ServerSQL Server o de la intercalación de Windows que se va a aplicar a la expresión, definición de columna o definición de base de datos.COLLATE uses collate_name to refer to the name of either the SQL ServerSQL Server collation or the Windows collation to be applied to the expression, column definition, or database definition. collation_name solamente puede ser un Windows_collation_name o un SQL_collation_name especificado y el parámetro debe contener un valor literal.collation_name can be only a specified Windows_collation_name or a SQL_collation_name and the parameter must contain a literal value. collation_name no se puede representar con una variable ni una expresión.collation_name cannot be represented by a variable or expression.

Las intercalaciones se suelen identificar mediante un nombre de intercalación, excepto en el programa de instalación.Collations are generally identified by a collation name, except in Setup. En el programa de instalación, se especifica en su lugar el designador de intercalación raíz (configuración regional de la intercalación) para las intercalaciones de Windows y, después, se especifican las opciones de ordenación que distinguen o no las mayúsculas de minúsculas, o acentos.In Setup, you instead specify the root collation designator (the collation locale) for Windows collations, and then specify sort options that are sensitive or insensitive to case or accents.

Puede ejecutar la función del sistema fn_helpcollations para recuperar una lista de todos los nombres de intercalación válidos para intercalaciones de Windows y de SQL Server:You can execute the system function fn_helpcollations to retrieve a list of all the valid collation names for Windows collations and SQL Server collations:

SELECT name, description
FROM fn_helpcollations();

SQL ServerSQL Server solo admite páginas de códigos compatibles con el sistema operativo subyacente.can support only code pages that are supported by the underlying operating system. Cuando ejecuta una acción que depende de intercalaciones, la intercalación de SQL ServerSQL Server utilizada por el objeto de referencia debe usar una página de códigos compatible con el sistema operativo del equipo.When you perform an action that depends on collations, the SQL ServerSQL Server collation used by the referenced object must use a code page supported by the operating system running on the computer. Entre estas acciones pueden incluirse las siguientes:These actions can include the following:

  • Especificar una intercalación predeterminada para una base de datos durante su creación o modificación.Specifying a default collation for a database when you create or alter the database.
  • Especificar una intercalación para una columna durante la creación o la modificación de una tabla.Specifying a collation for a column when you create or alter a table.
  • Cuando se restaura o anexa una base de datos, la intercalación predeterminada de la base de datos y la intercalación de las columnas char, varchar y text o los parámetros de la base de datos deben ser compatibles con el sistema operativo.When restoring or attaching a database, the default collation of the database and the collation of any char, varchar, and text columns or parameters in the database must be supported by the operating system.

Nota

Las traducciones de páginas de códigos se admiten para los tipos de datos char y varchar, pero no para el tipo de datos text.Code page translations are supported for char and varchar data types, but not for text data type. La pérdida de datos durante la traducción de páginas de códigos no se notifica.Data loss during code page translations is not reported.

Si la intercalación especificada o la intercalación usada por el objeto al que se hace referencia usa una página de códigos no admitida por Windows, SQL ServerSQL Server muestra un error.If the collation specified or the collation used by the referenced object uses a code page not supported by Windows, SQL ServerSQL Server displays an error.

EjemplosExamples

A.A. Especificar la intercalación durante una operación SELECTSpecifying collation during a SELECT

En el ejemplo siguiente se crea la tabla simple y se insertan 4 filas.The following example creates a simple table and inserts 4 rows. A continuación, el ejemplo aplica dos intercalaciones al seleccionar datos de la tabla, mostrando cómo Chiapas se ordena de manera diferente.Then the example applies two collations when selecting data from the table, demonstrating how Chiapas is sorted differently.

CREATE TABLE Locations
(Place varchar(15) NOT NULL);
GO
INSERT Locations(Place) VALUES ('Chiapas'),('Colima')
                             , ('Cinco Rios'), ('California');
GO
--Apply an typical collation
SELECT Place FROM Locations
ORDER BY Place
COLLATE Latin1_General_CS_AS_KS_WS ASC;
GO
-- Apply a Spanish collation
SELECT Place FROM Locations
ORDER BY Place
COLLATE Traditional_Spanish_ci_ai ASC;
GO

Estos son los resultados de la primera consulta.Here are the results from the first query.

Place
-------------
California
Chiapas
Cinco Rios
Colima

Estos son los resultados de la segunda consulta.Here are the results from the second query.

Place
-------------
California
Cinco Rios
Colima
Chiapas

B.B. Otros ejemplosAdditional examples

Para ver más ejemplos en los que se usa COLLATE, consulte el ejemplo de CREATE DATABASEG. Crear una base de datos y especificar un nombre de intercalación y sus opciones, y el ejemplo de ALTER TABLEV. Cambiar la intercalación de columnas.For additional examples that use COLLATE, see CREATE DATABASE example G. Creating a database and specifying a collation name and options, and ALTER TABLE example V. Changing column collation.

Consulte tambiénSee Also