LoginSignup
0
0

SQL Server の列の照合順序の変更

Last updated at Posted at 2024-05-18

自分の持っている本「一目でわかる Microsoft SQL Server 2008」によると、SQL Server の照合順序はサーバー、データベース、列、式に対して指定することができるそうです。(テーブルレベルでは指定できないようです)

そして、照合順序は変更できるのですが、既存のデータベースの照合順序を変更しても、そのテーブルの中の列の照合順序は元のままで、変更されないということは知ってました?

実は、自分は知らなかったです。おかげで 1 ~ 2 時間ハマってしまいました。(汗) また時間を無駄にすることがないように備忘録を残しておきます。

(1) データベースの照合順序

image.jpg

データベースの照合順序は SQL Server Management Studio (SSMS) を使って表示・変更することが
できます。Transact-SQL を使っても可能です。詳しくは Microsoft の文書「照合順序情報の表示」を見てください。

上の画像は、SSMS で既存のデータベース TestDatabase を右クリックして[データベースのプロパティ]ダイアログを開き、[ページの選択]で[オプション]を選択したものです。[照合順序(C)]ボックスに現在の照合順序が表示されています。

この画面で、[照合順序(C)]ボックスのドロップダウンリストから他の照合順序を選んで、変更することができます。

現在はサーバーレベルでのデフォルトの照合順序を継承して Japanese_CI_AS になっていますが、試しにそれを Japanese_BIN2 に変更してみます。

(2) 列の照合順序

image (1).jpg

上の画像は、上記 (1) で既存のデータベース TestDatabase の照合順序を Japanese_CI_AS から Japanese_BIN2 に変更した後の、テーブル dbo.T_TRADE の 列 USER_ID (varchar(10), NOT NULL) のプロパティを SSMS で見たものです。

列 USER_ID の照合順序は Japanese_CI_AS のまま変わってないのが分かるでしょうか

(3) 列の照合順序の変更

image (2).jpg

列の照合順序の変更は Transact-SQL を使って可能です。詳しい方法は Microsoft の文書「列の照合順序の設定または変更」を見てください。

上の画像は、SSMS 上で Transact-SQL を使って、テーブル dbo.T_TRADE の 列 USER_ID の照合順序を Japanese_BIN2 に変更したところです。

(4) 変更後の列の照合順序

image (3).jpg

上の画像の通り、上記 (3) の手順を実行した結果、テーブル dbo.T_TRADE の 列 USER_ID の照合順序が Japanese_BIN2 に変更されています。

以上、既存のデーターベースの照合順序をデータベースレベルで変更しても列の照合順序は変わらないので、上記の操作をして列の照合順序を変えないと意味が無いという話でした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0