照合順序と sql azure
TRANSCRIPT
2010/11/25 おだ
自己紹介
照合順序ってなに?
SQL Azure では
まとめ
お だ
大阪で 開発者 してます。
個人的に興味のある技術等を blog で取り上げてます。
http:/d.hatena.ne.jp/odashinsuke/
SQL World/わんくま同盟/JGGUG の勉強会に参加してます
照合順序は、特定の言語とロケールの基準に基づいて、文字データの文字列の並べ替え方法および比較方法に関する規則を指定します。
http://msdn.microsoft.com/ja-jp/library/ms187582.aspx
たとえば、昇順のORDER BY 句では、英語を話す人は文字列 'Chiapas' が 'Colima' より前に並べ替えられると予測
するでしょう。しかし、メキシコ在住のスペイン語を話す人であれば、'Ch' で始まる単語が 'C' で始まる単語の末尾に並べ替えられることを予測するかもしれません。
スペイン語わかんないから例えられても…( ゚д゚)ポカーン
ようは「文字データ」の
並び替え方法
比較方法を決めるルールって事!
非Unicode 型① char 型
② varchar 型
③ text 型 (varchar(max) 型)
Unicode 型① nchar 型
② nvarchar 型
③ ntext 型 (nvarchar(max) 型)※text, ntext は将来削除される可能性有り!http://msdn.microsoft.com/ja-jp/library/ms187993.aspx
非Unicode 型の文字データに照合順序を指定すると、その照合順序には特定のコードページが関連付けられます。http://msdn.microsoft.com/ja-jp/library/ms187582.aspx
http://msdn.microsoft.com/ja-jp/library/ms186356.aspx
コードページ (code page) とは文字セットのこ
とで、数字、区切り記号、および他のグリフを含むこともあります。http://msdn.microsoft.com/ja-jp/library/2x8et5ee.aspx
よく言われる文字コードってこと?
文字化けの原因?!
次の4つの単位で設定可能
サーバー (インスタンス)
データベース
列
式
基本は上位の設定を引き継ぐ。
下位で変更可能。http://msdn.microsoft.com/ja-jp/library/ms177439.aspx
おまけ
識別子 サーバー(インスタンス)の照合順序が適用される
1. ログイン名、データベース名等
2. 直接発行する SQL 内の変数、GOTO ラベル等
3. 組み込みストアド、関数等
データベースの照合順序が適用される1. テーブル名、列名等
http://msdn.microsoft.com/ja-jp/library/ms188686.aspx
同じT-SQL でも、サーバーの照合順序が違うと…
列、式しか照合順序を指定出来ない。
サーバーの照合順序は固定。
SQL_LATIN1_GENERAL_CP1_CI_AShttp://msdn.microsoft.com/en-us/library/ee336245.aspx
なので、
非 Unicode 型を使うと適切な照合順序を指定しない場合、日本語が化けます。(コードページの話)
同期や移行の事を考えると…新規で構築する SQL Server は、サーバーの照合順序を
「SQL_LATIN1_GENERAL_CP1_CI_AS」
にしておくというのも有りかも?
並び替えや比較に影響がある。
非 Unicode データの場合は、コードページも注意!(文字化けの原因)
サーバー、データベース、列、式に設定可能->識別子も照合順序の影響を受ける。
->SQL Azure では、サーバーは固定で、列、式のみ設定可能
SQL Azure への同期や移行を考えている場合、照合順序を合わせておく事も考慮する?