sql搜索包含变音符号的字段

Cri*_*riu 11 sql collation sql-server-2008

我正在使用Sql server 2008 express版的网站搜索.

我有'Books'表,其中有一个名为'Title ' 的字段,其中有标题包含罗马尼亚语(拉丁语)字符.

好吧,如果用户在搜索字段中插入一个单词:'casa',我在db中有一个标题,如:' testcasătest ',我想显示那本书但是:

select * from books where title like '%casa%'
Run Code Online (Sandbox Code Playgroud)

找不到它......

你知道在做选择时删除变音符号的任何函数吗?

我知道我可以用sql server的全文搜索附加组件解决问题,但我想以更简单的方式做到这一点.

gbn*_*gbn 16

select * from books where title COLLATE Latin1_General_CI_AI like '%casa%'
Run Code Online (Sandbox Code Playgroud)

当然,您应该选择与您匹配的排序规则...只需将AS更改为AI,以使其"重音不敏感"

德语变音符号的快速示例

DECLARE @foo TABLE (bar varchar(100) /*implied COLLATE Latin1_General_CI_AS*/)

INSERT @foo VALUES ('xxx fish yyy')
INSERT @foo VALUES ('xxx bar yyy' )
INSERT @foo VALUES ('xxx bär yyy')

select * from @foo where bar COLLATE Latin1_General_CI_AI like '%bar%'
select * from @foo where bar like '%bar%'
Run Code Online (Sandbox Code Playgroud)


Mar*_*ith 5

您需要使用重音不敏感的collat​​e子句.