3

テーブルを作成する場合、COLLATE 句はオプションです。したがって、次のようになります。

CREATE TABLE T1 (
  F1 varchar(50) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL,
  F2 varchar(50) NOT NULL
)

F2 の照合は、データベースのデフォルトによって決定されます。

これまで、私たちのチームは常にデフォルトの照合を使用していました。ただし、照合を明示的に指定する必要がある列がいくつかあります。常に照合を指定するように標準を変更するかどうかを検討しており、この決定に役立つ可能性のある追加情報を探しています。

そう:

  • 常に照合を指定することの利点/欠点は何ですか?
  • 常に照合順序を指定する場合に注意する必要がある落とし穴はありますか?

関連する可能性のある追加情報:

  • 複数のクライアントにデプロイしますが、すべてのクライアントが同時にアップグレードされるわけではありません。
  • 一部のクライアントは、サーバー上で異なる照合構成を持っています。
  • 私たちのアプリケーションは Ansi 文字列を使用しており、Unicode を考慮するのは非常に先の話です。
  • MS SQL Server 2005以降を使用しています(ただし、可能であれば、照合をサポートするプラットフォームに一般的な質問をしたいと思います)。

: この質問は、照合の競合を解決する方法や、既存のサーバー/データベース/列の照合を変更する方法について質問するものではありません。(すでにたくさんあります。)

4

2 に答える 2

2

クライアント マシンに展開するアプリケーションを構築しています。照合について明示する必要があります。

たとえば、デフォルトの照合では大文字と小文字が区別されません。クライアントが、何らかの理由でデータベースのデフォルトで大文字と小文字を区別することを好む場合、比較はマシンによって異なります。

デバッグの問題もあります。クライアントが 1 つの順序で結果を取得している場合、テスト/開発システムは別の順序で結果を取得する可能性があります。これにより、デバッグやカスタマー サポートが妨げられる可能性があります。

最終的には、デバッグ、メンテナンス、およびサポートのために、一貫したソフトウェアを側に置いたほうがよいでしょう。特定のクライアントが別の形式のデータを必要とする場合は、そのクライアント用にシステムをカスタマイズします。

于 2012-07-20T14:09:45.533 に答える
0

データベースの照合順序 (デフォルト) と同じ場合、照合順序を指定しても意味がありません。別の照合順序で F1 にデータを保存する場合にのみ、例で行ったことを行う必要があります

于 2012-07-20T11:53:52.603 に答える