COLLATE (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)Warehouse di Microsoft Fabric

Menentukan kolatasi database atau kolom tabel, atau operasi kolater cast saat diterapkan ke ekspresi string karakter. Nama kolase dapat berupa nama kolase Windows atau nama kolase SQL. Jika tidak ditentukan selama pembuatan database, database diberi kolase default instans SQL Server. Jika tidak ditentukan selama pembuatan kolom tabel, kolom diberi kolase default database.

Konvensi sintaks transact-SQL

Sintaksis

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

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

collation_name Adalah nama kolase yang akan diterapkan ke definisi ekspresi, definisi kolom, atau database. collation_name hanya dapat berupa Windows_collation_name atau SQL_collation_name tertentu. collation_name harus berupa nilai harfiah. collation_name tidak dapat diwakili oleh variabel atau ekspresi.

Windows_collation_name adalah nama kolake untuk Nama Kolatasi Windows.

SQL_collation_name adalah nama kolase untuk Nama Kolase SQL Server.

Catatan

Di Microsoft Fabric, satu-satunya kolatasi yang diizinkan adalah: Latin1_General_100_BIN2_UTF8.

database_default Menyebabkan klausul COLLATE mewarisi kolase database saat ini.

Keterangan

Klausa COLLATE dapat ditentukan pada beberapa tingkat. Manfaatnya meliputi:

  1. Membuat atau mengubah database.

    Anda dapat menggunakan klausul COLLATE dari CREATE DATABASE pernyataan atau ALTER DATABASE untuk menentukan kolatasi default database. Anda juga dapat menentukan kolase saat membuat database menggunakan SQL Server Management Studio. Jika Anda tidak menentukan kolase, database diberi kolase default instans SQL Server.

    Catatan

    Kolase khusus Windows Unicode hanya dapat digunakan dengan klausa COLLATE untuk menerapkan kolase ke jenis data nchar, nvarchar, dan ntext pada data tingkat kolom dan tingkat ekspresi; ini tidak dapat digunakan dengan klausul COLLATE untuk menentukan atau mengubah kolase database atau instans server.

  2. Membuat atau mengubah kolom tabel.

    Anda dapat menentukan kolate untuk setiap kolom string karakter menggunakan klausa COLLATE dari CREATE TABLE pernyataan atau ALTER TABLE . Anda juga dapat menentukan kolase saat membuat tabel menggunakan SQL Server Management Studio. Jika Anda tidak menentukan kolase, kolom diberi kolase default database.

    Anda juga dapat menggunakan database_default opsi dalam klausul COLLATE untuk menentukan bahwa kolom dalam tabel sementara menggunakan default kolas database pengguna saat ini untuk koneksi alih-alih tempdb.

  3. Mentransmisian kolas ekspresi.

    Anda dapat menggunakan klausul COLLATE untuk menerapkan ekspresi karakter ke kolate tertentu. Literal karakter dan variabel diberi kolase default dari database saat ini. Referensi kolom diberi kolase definisi kolom.

Kolatasi pengidentifikasi tergantung pada tingkat di mana pengidentifikasi ditentukan. Pengidentifikasi objek tingkat instans, seperti login dan nama database, diberi kolase default instans. Pengidentifikasi objek dalam database, seperti tabel, tampilan, dan nama kolom, diberi kolase default database. Misalnya, dua tabel dengan nama yang berbeda hanya jika dapat dibuat dalam database dengan kolase peka huruf besar/kecil, tetapi mungkin tidak dibuat dalam database dengan kolase yang tidak peka huruf besar/kecil. Untuk informasi selengkapnya, lihat Pengidentifikasi Database.

Variabel, label GOTO, prosedur tersimpan sementara, dan tabel sementara dapat dibuat ketika konteks koneksi dikaitkan dengan satu database, lalu direferensikan ketika konteks telah dialihkan ke database lain. Pengidentifikasi untuk variabel, label GOTO, prosedur tersimpan sementara, dan tabel sementara berada dalam kolase default instans server.

Klausa COLLATE hanya dapat diterapkan untuk jenis data karakter, varchar, teks, nchar, nvarchar, dan ntext .

COLLATE menggunakan collate_name untuk merujuk ke nama kolase SQL Server atau kolase Windows yang akan diterapkan ke definisi ekspresi, definisi kolom, atau database. collation_name hanya dapat berupa Windows_collation_name tertentu atau SQL_collation_name dan parameter harus berisi nilai harfiah. collation_name tidak dapat diwakili oleh variabel atau ekspresi.

Kolase umumnya diidentifikasi dengan nama kolase, kecuali dalam Penyiapan. Di Penyetelan, Anda menentukan penunjuk kolaborasi akar (lokal kolaborasi) untuk kolaborasi Windows, lalu menentukan opsi pengurutan yang sensitif atau tidak peka terhadap huruf besar/kecil atau aksen.

Anda dapat menjalankan fungsi sistem fn_helpcollations untuk mengambil daftar semua nama kolase yang valid untuk kolase Windows dan kolase SQL Server:

SELECT name, description
FROM fn_helpcollations();

SQL Server hanya dapat mendukung halaman kode yang didukung oleh sistem operasi yang mendasar. Saat Anda melakukan tindakan yang bergantung pada kolase, kolase SQL Server yang digunakan oleh objek yang dirujuk harus menggunakan halaman kode yang didukung oleh sistem operasi yang berjalan di komputer. Tindakan ini dapat mencakup hal berikut:

  • Menentukan kolase default untuk database saat Anda membuat atau mengubah database.
  • Menentukan kolase untuk kolom saat Anda membuat atau mengubah tabel.
  • Saat memulihkan atau melampirkan database, kolase default database dan kolase kolom atau parameter karakter, varchar, dan teks dalam database harus didukung oleh sistem operasi.

Catatan

Terjemahan halaman kode didukung untuk jenis data karakter dan varchar , tetapi tidak untuk jenis data teks . Kehilangan data selama terjemahan halaman kode tidak dilaporkan.

Jika kolase yang ditentukan atau kolase yang digunakan oleh objek yang dirujuk menggunakan halaman kode yang tidak didukung oleh Windows, SQL Server menampilkan kesalahan.

Contoh

J. Menentukan kolatasi selama SELECT

Contoh berikut membuat tabel sederhana dan menyisipkan 4 baris. Kemudian contoh menerapkan dua kolase saat memilih data dari tabel, menunjukkan bagaimana diurutkan Chiapas secara berbeda.

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

Berikut adalah hasil dari kueri pertama.

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

Berikut adalah hasil dari kueri kedua.

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

B. Contoh tambahan

Untuk contoh tambahan yang menggunakan COLLATE, lihat MEMBUAT contoh DATABASE G. Membuat database dan menentukan nama dan opsi kolase, dan MENGUBAH contoh TABEL V. Mengubah kolase kolom.

Lihat Juga