照合は、サーバーレベル、データベースレベル、列レベル、式レベル、および識別子レベルで指定できます。これらごとに異なる方法が必要です。
サーバーレベルの照合
サーバーレベルの照合を見つける方法は次のとおりです。
SELECT CONVERT (varchar, SERVERPROPERTY('collation')) AS 'Server Collation';
これにより、次のような照合が返されます:
Server Collation ---------------------------- SQL_Latin1_General_CP1_CI_AS
sp_helpsort
を使用することもできます サーバーのデフォルトの照合を返すストアドプロシージャ:
EXECUTE sp_helpsort;
これにより、次のような照合が返されます:
Server default collation ---------------------------- Latin1-General, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive for Unicode Data, SQL Server Sort Order 52 on Code Page 1252 for non-Unicode Data
データベースレベルの照合
次のクエリを実行して、特定のデータベースの照合を返します。 WHERE
句を使用すると、関心のあるデータベースに結果を絞り込むことができます。
SELECT name, collation_name FROM sys.databases WHERE name = 'Music';
これにより、次のようになります。
name collation_name ----- ---------------------------- Music SQL_Latin1_General_CP1_CI_AS
この場合、Music
というデータベースを指定しました 。
DATABASEPROPERTYEX()
を使用することもできます データベースのデフォルトの照合を返す関数:
SELECT DATABASEPROPERTYEX('Music', 'Collation') AS Collation;
列レベルの照合
照合は、列レベルで指定することもできます。特定の列が使用する照合を見つけるには、sys.columns
に対してクエリを実行します 。このように:
SELECT name, collation_name FROM sys.columns WHERE name = N'ArtistName';
これにより、次のようになります。
name collation_name ---------- ---------------------------- ArtistName SQL_Latin1_General_CP1_CI_AS
式と識別子レベルの照合
文字列式に照合を適用して、照合キャストを適用できます。たとえば、COLLATE
を使用できます SELECT
の句 使用する照合を指定するステートメント。このように:
USE Music; SELECT ArtistId, ArtistName FROM Artists ORDER BY ArtistName COLLATE Latin1_General_CI_AI;
その照合ではCI
を使用します 大文字と小文字を区別しない場合、およびAI
アクセントに影響されないようにします。
これをCS
に変更できます 大文字と小文字を区別する場合、およびAS
アクセントに敏感な場合、クエリ結果は(データに応じて)異なる方法で並べ替えられる場合があります:
USE Music; SELECT ArtistId, ArtistName FROM Artists ORDER BY ArtistName COLLATE Latin1_General_CS_AS;
したがって、これにより、クエリの実行時にデータベースまたは列レベルで適用される照合をオーバーライドできます。