真剣に、データベースの照合を変更することは非常に苦痛です。codeprojectからこのHOWTOを見て、それを行う前によく考えてください!これは簡単な方法です!
まず、検索の一部として照合を変更する必要がないことを指定するだけで、アクセントに依存しないデータベースの検索を許可できます。
select * from TableName
where name collate Latin1_General_CI_AI like @parameter
単純なように。ただし、これはインデックスを傷つけます。
別の方法は、個別に索引付けできる計算フィールドを提供することです。
create table TableName(
ix int identity primary key,
name nvarchar(20) collate latin1_general_ci_as
)
go
alter table TableName
add name_AI as name collate latin1_general_CI_AI
go
create index IX_TableName_name_AI
on dbo.TableName(name_AI)
上記の例ではそれをテーブルに配置していますが、インデックス付きビューを作成することもできます。
create view dbo.TableName_AI
with schemabinding
as
select ix,
name collate Latin1_general_CI_AI as name
from dbo.TableName
go
-- Need a unique clustered index first
create unique clustered index IX_TableName_AI_Clustered on dbo.TableName_AI(ix)
-- then the index for searching
create index IX_TableName_AI_name on dbo.TableName_AI(name)
次に、アクセントに依存しない検索の場合は、ビューを使用しますTableName_AI
。
特定の質問に答えるには:
アクセントに依存しないデータベースでは、アクセントに依存する検索は遅くなります。
はい、でもそうではありません。
ただです。何かがデフォルトである必要があります:それが気に入らない場合は、デフォルトを使用しないでください!
このように考えてください。「Hard」と「Herd」は同じ言葉ではありません。同じように聞こえますが、母音の違いは1つで十分です。
アクセントの違い(aとá)は、大文字と小文字の違い(Aとa)と文字の違い(aとe)の間のどこかにあります。どこかに線を引く必要があります。
アクセントは単語の音に影響を与え、例を考えるのに苦労しますが、それを別の意味にすることができます。データベースにアクセントを利用する言語の単語がある人にとっては、もっと理にかなっていると思います。