misc.log

日常茶飯事とお仕事と

自動生成されたユニークキーをSQL Serverで扱う場合の注意

何かのシステムが吐き出したキー文字列をSQL Server上でキーとして利用する場合、照合順序に気をつけましょう。

特にアルファベットを多用したキーの場合、キー重複でやられる可能性があります。SQL Serverで日本語を扱うDBを作った場合、たいていテーブルや列の照合順序は「Japanese_CI_AS」になっています。これは

  • Japanese:日本語
  • CI:Case Insensitive:大文字小文字区別無し
  • AS:Accent Sensitive:アクセント、濁音半濁音区別

という指定で、これだと「a」と「A」は比較処理などでは同じデータとして扱われます。これはSQLでの検索条件などでも同様です。

SQL文中でこの指定を強制的に変更するには、末尾に

collate Japanese_CS_AI

などの一文を付けて任意のルールを指定可能です。

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ)

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ)

この辺なども参考にするとよいでしょう。

stackoverflow.com