.net column

.NET開発者のためのブログメディア
数字と文字

SQL Serverで照合順序を設定・変更する方法

2020年07月28日

照合順序はご存知でしょうか。SQLにまだ慣れていない開発者の方には早めの理解をおすすめするスキルでもあります。
ユーザーが画面で確認を行う検索一覧画面で主に必要となってきます。ここでは、SQL Serverを利用した照合順序の設定方法を解説していきます。

SE
そもそも照合順序ってどういったものですか?あまり聞きなれない単語ですけど……
PL
簡単に言うと、データの文字列の大小関係を比較する場合の基準となるものです。T-SQLで実装する場合は、COLLATE命令を使用して比較できます。

SQL Serverの照合順序とは?

照合順序とは、アルファベットの「a」「A」、カナの「あ」「ア」「ア」、漢字の「川」「皮」などを、どういった順序で並べるかを決める基準を指します。
システム開発の現場では、この照合順序を理解しておくことはとても大切です。

SQL Serverの照合順序では、サーバ、データベース、列、式レベルに対して指定することが可能です。テーブル単位では指定できないことは覚えておきましょう。
また、照合順序は変更できますが、既存のデータベースの照合順序を変更したとしても、テーブルの列の照合順序は変更されません。その点にも注意が必要です。

それでは、T-SQLのCOLLATE命令を使用して、実際に照合順序について確認しましょう。
まずは既存データベースの照合順序を確認しておきます。

照合順序の確認

データベースに指定されている照合順序は「Japanese_CI_AS」であることが確認できました。
この状態は、Japanese:日本語順、CI: 英大文字と英小文字を区別しない、AS: アクセント(濁点等)を区別する、をそれぞれ表しています。

SQL Serverの照合順序を設定する方法

COLLATE命令を使用して照合順序を指定します。
まずは以下のテーブルを準備します。
テーブルの準備

上記で作成したテーブルに対して照合順序を指定して検索を行います。

WHERE句に照合順序を指定

ORDER BY句に照合順序を指定

COLLATE命令を使用して、照合順序を行う基本構文は以上です。それでは、次にオプションについても確認しておきましょう。

SQL Serverの照合順序オプションの確認

オプション説明
Japanese_BINバイナリで比較を行い、すべて区別します。
Japanese_BIN2バイナリコードで比較を行い、すべて区別します。
CI大文字と小文字の区別は行いません。「A」と「a」は同じです。
CS大文字と小文字の区別を行います。「A」と「a」を区別します。
AIアクセント、濁音、半濁音の区別を行いません。「は」と「ば」と「ぱ」は同じです。
ASアクセント、濁音、半濁音の区別を行います。「は」と「ば」と「ぱ」は区別されます。
KSひらがなとカタカナの区別を行います。「あ」と「ア」は区別されます。
WS半角と全角の区別を行います。

上記を使用する場合の基本構文は以下となります。
構文: Japanese_BIN,Japanese_BIN2
構文: Japanese_(CI | CS)_(AI | AS)[(_KS | _WS | _KS_WS)]

オプションを変更して検索

SE
照合順序ってこれまで使ったことがありませんでした。これからは名前で検索する場合などで使っていきたいと思います。
PL
名前で検索する時には利用しておいた方が無難でしょう。ユーザーによっては細かく指定されるかもしれませんが、ここで学んだオプションを上手に使いこなして、ユーザーが求める検索一覧を作っていきましょう。

文字列での検索を行う場合は照合順序を指定

検索一覧画面などでは、ソートをして出力順序を指定することが多くなります。大抵の場合は内部的なコードで行いますが、そのようなコードがない場合には、文字列でのソートになります。文字列のソートでは、大文字、小文字、半角、全角の区別はしっかりと行いたいところですので、照合順序は早めにマスターしておきましょう。

>>>SQL Serverの案件を探すならFEnet .NET Navi


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)