COLLATE (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'te ambarMicrosoft Fabric'te SQL veritabanı

Bir veritabanı veya tablo sütununun harmanlamasını ya da karakter dizesi ifadesine uygulandığında harmanlama atama işlemini tanımlar. Harmanlama adı bir Windows harmanlama adı veya SQL harmanlama adı olabilir. Veritabanı oluşturma sırasında belirtilmezse, veritabanına SQL Server örneğinin varsayılan harmanlaması atanır. Tablo sütunu oluşturma sırasında belirtilmezse, sütuna veritabanının varsayılan harmanlaması atanır.

Transact-SQL söz dizimi kuralları

Sözdizimi

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

Bağımsız değişken

collation_name

İfadeye, sütun tanımına veya veritabanı tanımına uygulanacak harmanlamanın adıdır. collation_name yalnızca belirtilen bir Windows_collation_name veya SQL_collation_nameolabilir. collation_name değişmez değer olmalıdır. collation_name bir değişken veya ifadeyle temsil edilemez.

Windows_collation_name, Windows Harmanlama Adıiçin harmanlama adıdır.

SQL_collation_name, SQL Server Harmanlama Adıiçin harmanlama adıdır.

Not

Microsoft Fabric Veri Ambarı'nda, COLLATE deyimindeki SELECT yan tümcesi kısıtlanmamıştır ve desteklenmeyen harmanlamalarla uygulanabilir. Microsoft Fabric Veri Ambarı'nda tüm ambarlar varsayılan olarak büyük/küçük harfe duyarlı (CS) harmanlama Latin1_General_100_BIN2_UTF8ile yapılandırılır. Büyük/küçük harfe duyarlı olmayan (CI) harmanlama ambar oluşturabilirsiniz.

Ancak, yalnızca desteklenen harmanlamalar COLLATE, CREATE TABLE, ALTER TABLE ADD nullable columnve SELECT INTO (CTAS) deyimlerindeki CREATE TABLE AS SELECT yan tümcesiyle kullanılabilir.

database_default Maddenin COLLATE mevcut veritabanının derlemesini devralmasına neden olur.

Açıklamalar

Bu COLLATE madde birkaç düzeyde belirtilebilir. Bunlar şunları içerir:

  1. Veritabanı oluşturma veya değiştirme.

    COLLATE Veritabanının varsayılan derlemesini belirtmek için or ALTER DATABASE ifadesinin maddesini CREATE DATABASE kullanabilirsiniz. SQL Server Management Studio kullanarak veritabanı oluştururken harmanlama da belirtebilirsiniz. Harmanlama belirtmezseniz, veritabanına SQL Server örneğinin varsayılan harmanlaması atanır.

    Not

    Windows Unicode için yapılan derlemeler, yalnızca COLLATE köşe düzeyinde ve ifade düzeyinde verilerde nchar, nvarchar ve ntext veri tiplerine collationlar uygulamak için bu maddeyle kullanılabilir; bunlar, bir veritabanı veya sunucu örneğinin derlemesini tanımlamak veya değiştirmek için clause COLLATE ile kullanılamaz.

  2. Tablo sütunu oluşturma veya değiştirme.

    Her karakter dizisi sütunu için or ALTER TABLE cümlesini CREATE TABLE kullanarak COLLATE derlemeler belirleyebilirsiniz. SQL Server Management Studio kullanarak tablo oluştururken harmanlama da belirtebilirsiniz. Harmanlama belirtmezseniz, sütuna veritabanının varsayılan harmanlaması atanır.

    Ayrıcadatabase_default, geçici bir tablodaki bir sütun, bağlantı tempdbyerine mevcut kullanıcı veritabanının varsayılanını kullanmasını belirtmek için COLLATE cümledeki seçeneği kullanabilirsiniz.

  3. bir ifadenin harmanlamasını atama.

    Bu maddeyi COLLATE , belirli bir derlemeye karakter ifadesi uygulamak için kullanabilirsiniz. Karakter değişmez değerlerine ve değişkenlere geçerli veritabanının varsayılan harmanlaması atanır. Sütun başvuruları, sütunun tanım harmanlaması atanır.

Tanımlayıcının harmanlanması, tanımlandığı düzeye bağlıdır. Oturum açma bilgileri ve veritabanı adları gibi örnek düzeyindeki nesnelerin tanımlayıcılarına, örneğin varsayılan harmanlaması atanır. Veritabanı içindeki tablolar, görünümler ve sütun adları gibi nesnelerin tanımlayıcılarına veritabanının varsayılan harmanlaması atanır. Örneğin, yalnızca büyük/küçük harfe duyarlı harmanlama içeren bir veritabanında farklı adlara sahip iki tablo oluşturulabilir, ancak büyük/küçük harfe duyarlı olmayan harmanlama içeren bir veritabanında oluşturulamayabilir. Daha fazla bilgi için bkz. Veritabanı Tanımlayıcıları.

Değişkenler, GOTO etiketleri, geçici saklı yordamlar ve geçici tablolar, bağlantı bağlamı bir veritabanıyla ilişkilendirildiğinde ve bağlam başka bir veritabanına geçirildiğinde başvurulduğunda oluşturulabilir. Değişkenler, GOTO etiketleri, geçici saklı yordamlar ve geçici tablolar için tanımlayıcılar, sunucu örneğinin varsayılan harmanlamasındadır.

Bu COLLATE cümle yalnızca char, varchar, text, nchar, nvarchar ve ntext veri türleri için uygulanabilir.

COLLATE collate_name, ifade, sütun tanımı veya veritabanı tanımına uygulanacak SQL Server derlemenin veya Windows derlemenin adını ifade etmek için kullanır. collation_name yalnızca belirtilen bir Windows_collation_name veya SQL_collation_name olabilir ve parametresi değişmez değer içermelidir. collation_name bir değişken veya ifadeyle temsil edilemez.

Harmanlamalar genellikle, Kurulum dışında bir harmanlama adıyla tanımlanır. Kurulum'da, bunun yerine Windows harmanlamaları için kök harmanlama belirticisini (harmanlama yerel ayarı) ve ardından büyük/küçük harfe veya vurgulara duyarlı veya duyarsız sıralama seçeneklerini belirtirsiniz.

Windows harmanlamaları ve SQL Server harmanlamaları için tüm geçerli harmanlama adlarının listesini almak için sistem işlevi fn_helpcollations yürütebilirsiniz:

SELECT name,
       description
FROM fn_helpcollations();

SQL Server yalnızca temel işletim sistemi tarafından desteklenen kod sayfalarını destekleyebilir. Harmanlamalara bağlı bir eylem gerçekleştirdiğinizde, başvuruda bulunulmuş nesne tarafından kullanılan SQL Server harmanlaması, bilgisayarda çalışan işletim sistemi tarafından desteklenen bir kod sayfası kullanmalıdır. Bu eylemler şunları içerebilir:

  • Veritabanını oluştururken veya değiştirirken veritabanı için varsayılan harmanlama belirtme.
  • Tablo oluştururken veya değiştirirken sütun için harmanlama belirtme.
  • Veritabanını geri yüklerken veya eklerken, veritabanının varsayılan harmanlaması ve karakterharmanlaması, varcharve veritabanındaki sütun veya parametreler metin işletim sistemi tarafından desteklenmelidir.

Not

Kod sayfası çevirileri karakter ve varchar veri türleri için desteklenir, ancak metin veri türü için desteklenmez. Kod sayfası çevirileri sırasında veri kaybı bildirilir.

Belirtilen harmanlama veya başvuruda bulunulmuş nesne tarafından kullanılan harmanlama Windows tarafından desteklenmeyen bir kod sayfası kullanıyorsa, SQL Server bir hata görüntüler.

Örnekler

A. SELECT sırasında harmanlamayı belirtme

Aşağıdaki örnek basit bir tablo oluşturur ve 4 satır ekler. Ardından örnek, tablodan veri seçerken iki harmanlama uygulayarak Chiapas nasıl farklı sıralanacağını gösterir.

CREATE TABLE Locations
(
    Place VARCHAR (15) NOT NULL
);

GO

INSERT Locations (Place)
VALUES ('Chiapas'),
('Colima'),
('Cinco Rios'),
('California');
GO
--Apply a 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
-- Using LIKE
SELECT Place FROM Locations
WHERE Place COLLATE Latin1_General_CI_AS LIKE 'C%' ASC;
GO

İlk SELECT sorgusunun sonuçları aşağıdadır.

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

İkinci SELECT sorgusunun sonuçları aşağıdadır.

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

Üçüncü SELECT sorgusunun sonuçları aşağıdadır.

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

B. Ek örnekler

Kullanan COLLATEek örnekler için bkz. CREATE DATABASE ve ALTER TABLE.