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

적용 대상: 예SQL Server 예Azure SQL Database 예Azure Synapse Analytics(SQL DW) 예병렬 데이터 웨어하우스 APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

문자열 식에 적용될 때 데이터베이스 또는 테이블 열의 데이터 정렬 또는 데이터 정렬 캐스트 작업을 정의합니다.Defines a collation of a database or table column, or a collation cast operation when applied to character string expression. 데이터 정렬 이름으로는 Windows 데이터 정렬 이름 또는 SQL 데이터 정렬 이름을 사용할 수 있습니다.Collation name can be either a Windows collation name or a SQL collation name. 데이터베이스를 만들 때 지정하지 않으면 데이터베이스에 SQL ServerSQL Server 인스턴스의 기본 데이터 정렬이 할당됩니다.If not specified during database creation, the database is assigned the default collation of the instance of SQL ServerSQL Server. 테이블 열을 만들 때 지정하지 않으면 열에 데이터베이스의 기본 데이터 정렬이 할당됩니다.If not specified during table column creation, the column is assigned the default collation of the database.

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax

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

인수Arguments

collation_name 식, 열 정의 또는 데이터베이스 정의에 적용할 데이터 정렬의 이름입니다.collation_name Is the name of the collation to be applied to the expression, column definition, or database definition. collation_name에는 지정된 Windows_collation_name 또는 SQL_collation_name만 사용할 수 있습니다.collation_name can be only a specified Windows_collation_name or a SQL_collation_name. collation_name은 리터럴 값이어야 합니다.collation_name must be a literal value. 변수나 식으로 collation_name을 나타낼 수 없습니다.collation_name cannot be represented by a variable or expression.

Windows_collation_nameWindows 데이터 정렬 이름의 데이터 정렬 이름입니다.Windows_collation_name is the collation name for a Windows Collation Name.

SQL_collation_nameSQL Server 데이터 정렬 이름의 데이터 정렬 이름입니다.SQL_collation_name is the collation name for a SQL Server Collation Name.

database_default COLLATE 절이 현재 데이터베이스의 데이터 정렬을 상속하도록 합니다.database_default Causes the COLLATE clause to inherit the collation of the current database.

RemarksRemarks

COLLATE 절은 여러 수준에서 지정할 수 있습니다.The COLLATE clause can be specified at several levels. 여기에는 다음과 같은 옵션이 포함됩니다.These include the following:

  1. 데이터베이스 만들기 또는 변경Creating or altering a database.

    CREATE DATABASE 또는 ALTER DATABASE 문의 COLLATE 절을 사용하여 데이터베이스의 기본 데이터 정렬을 지정할 수 있습니다.You can use the COLLATE clause of the CREATE DATABASE or ALTER DATABASE statement to specify the default collation of the database. 또한 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. 데이터 정렬을 지정하지 않은 경우에는 SQL ServerSQL Server 인스턴스의 기본 데이터 정렬이 데이터베이스에 할당됩니다.If you do not specify a collation, the database is assigned the default collation of the instance of SQL ServerSQL Server.

    참고

    Windows 유니코드 전용 데이터 정렬은 COLLATE 절에서 열 수준 및 식 수준 데이터의 nchar, nvarcharntext 데이터 형식에 데이터 정렬을 적용하기 위해서만 사용할 수 있고 COLLATE 절에서 데이터베이스 또는 서버 인스턴스의 데이터 정렬을 정의하거나 변경하기 위해 사용할 수는 없습니다.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. 테이블 열 만들기 또는 변경Creating or altering a table column.

    CREATE TABLE 또는 ALTER TABLE 문의 COLLATE 절을 사용하여 각 문자열 열에 대한 데이터 정렬을 지정할 수 있습니다.You can specify collations for each character string column using the COLLATE clause of the CREATE TABLE or ALTER TABLE statement. 또한 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. 데이터 정렬을 지정하지 않은 경우에는 데이터베이스의 기본 데이터 정렬이 열에 할당됩니다.If you do not specify a collation, the column is assigned the default collation of the database.

    또한 COLLATE 절에서 database_default 옵션을 사용하여 임시 테이블의 열이 연결에 대해 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. 식의 데이터 정렬 캐스팅Casting the collation of an expression.

    COLLATE 절을 사용하여 문자 식을 특정 데이터 정렬에 적용할 수 있습니다.You can use the COLLATE clause to apply a character expression to a certain collation. 문자 리터럴과 변수에는 현재 데이터베이스의 기본 데이터 정렬이 할당됩니다.Character literals and variables are assigned the default collation of the current database. 열 참조에는 열의 기본 데이터 정렬이 할당됩니다.Column references are assigned the definition collation of the column.

식별자의 데이터 정렬은 식별자가 정의된 수준에 따라 달라집니다.The collation of an identifier depends on the level at which it is defined. 로그인과 데이터베이스 이름 등 인스턴스 수준 개체의 식별자에는 인스턴스의 기본 데이터 정렬이 할당됩니다.Identifiers of instance-level objects, such as logins and database names, are assigned the default collation of the instance. 테이블, 뷰, 열 이름 등 데이터베이스에 있는 개체의 식별자에는 데이터베이스의 기본 데이터 정렬이 할당됩니다.Identifiers of objects within a database, such as tables, views, and column names, are assigned the default collation of the database. 예를 들어 대/소문자만 다르고 동일한 이름인 두 테이블은 데이터 정렬이 대/소문자를 구분하는 데이터베이스에서는 만들 수 있지만 대/소문자를 구분하지 않는 데이터베이스에서는 만들 수 없습니다.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. 자세한 내용은 Database Identifiers을 참조하세요.For more information, see Database Identifiers.

변수, GOTO 레이블, 임시 저장 프로시저 및 임시 테이블은 연결 컨텍스트를 한 데이터베이스와 연결한 경우에 만들 수 있으며 컨텍스트를 다른 데이터베이스로 전환한 경우에 참조할 수 있습니다.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. 변수, GOTO 레이블, 임시 저장 프로시저 및 임시 테이블의 식별자는 서버 인스턴스의 기본 데이터 정렬에 있습니다.The identifiers for variables, GOTO labels, temporary stored procedures, and temporary tables are in the default collation of the server instance.

COLLATE 절은 char, varchar, text, nchar, nvarcharntext 데이터 형식에만 적용할 수 있습니다.The COLLATE clause can be applied only for the char, varchar, text, nchar, nvarchar, and ntext data types.

COLLATE는 collate_name을 사용하여 식, 열 정의 또는 데이터베이스 정의에 적용할 SQL ServerSQL Server 데이터 정렬 또는 Windows 데이터 정렬의 이름을 참조하세요.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에는 지정된 Windows_collation_name 또는 SQL_collation_name만 사용할 수 있으며 매개 변수에는 리터럴 값이 포함되어야 합니다.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을 나타낼 수 없습니다.collation_name cannot be represented by a variable or expression.

데이터 정렬은 설치할 때를 제외하고 일반적으로 데이터 정렬 이름으로 식별됩니다.Collations are generally identified by a collation name, except in Setup. 설치할 때는 Windows 데이터 정렬에 대해 루트 데이터 정렬 지정자(데이터 정렬 로캘)를 지정한 다음, 대소문자와 악센트를 구분하거나 구분하지 않는 정렬 옵션을 지정합니다.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.

시스템 함수인 fn_helpcollations를 실행하여 Windows 데이터 정렬과 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는 해당 운영 체제에서 지원되는 코드 페이지만 지원할 수 있습니다.can support only code pages that are supported by the underlying operating system. 데이터 정렬을 기반으로 하는 동작을 수행할 때마다 참조된 개체가 사용하는 SQL ServerSQL Server 데이터 정렬은 시스템에서 실행 중인 운영 체제가 지원하는 코드 페이지를 사용해야 합니다.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. 여기에는 다음과 같은 동작이 포함됩니다.These actions can include the following:

  • 데이터베이스를 만들거나 변경할 때 데이터베이스에 대한 기본 데이터 정렬 지정Specifying a default collation for a database when you create or alter the database.
  • 테이블을 만들거나 변경할 때 열에 대한 데이터 정렬 지정Specifying a collation for a column when you create or alter a table.
  • 데이터베이스를 복원하거나 연결할 때 데이터베이스의 기본 데이터 정렬과 데이터베이스 내의 모든 char, varchartext 열 또는 매개 변수의 데이터 정렬은 반드시 운영 체제에서 지원되는 것이어야 합니다.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.

참고

charvarchar 데이터 형식에 대해서는 코드 페이지 변환이 지원되지만 text 데이터 형식에 대해서는 지원되지 않습니다.Code page translations are supported for char and varchar data types, but not for text data type. 코드 페이지 변환 중 데이터가 손실되어도 보고되지 않습니다.Data loss during code page translations is not reported.

지정된 데이터 정렬 또는 참조된 개체가 사용하는 데이터 정렬에서 Windows가 지원하지 않는 코드 페이지를 사용하는 경우에는 SQL ServerSQL Server에서 오류가 나타납니다.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.

Examples

1.A. SELECT 중 데이터 정렬 지정Specifying collation during a SELECT

다음 예에서는 간단한 테이블을 만든 후 행 4개를 삽입합니다.The following example creates a simple table and inserts 4 rows. 그런 다음 테이블에서 데이터를 선택할 때 두 데이터 정렬을 적용하여 Chiapas가 서로 다르게 정렬되는 방식을 보여 줍니다.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

다음은 첫 번째 쿼리의 결과입니다.Here are the results from the first query.

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

다음은 두 번째 쿼리의 결과입니다.Here are the results from the second query.

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

2.B. 추가 예Additional examples

COLLATE를 사용하는 추가 예는 CREATE DATABASE 예제 G. 데이터베이스 만들기 및 데이터 정렬 이름과 옵션 지정ALTER TABLE 예제 V. 열 데이터 정렬 변경을 참조하세요.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.

참고 항목See Also