我在一个网站搜索工作,它使用的是Sql server 2008快速版。
我有'Books'表,其中有一个名为'Title‘的字段,其中有包含罗马尼亚(拉丁文)字符的标题。
好吧,如果用户在搜索字段中插入了一个类似于'casa‘这样的单词,而我在db中有一个标题:'test casăătest’,我想展示那本书,但是:
select * from books where title like '%casa%'不会找到的..。
你知道在做选择的时候有什么函数可以移除音符吗?
我知道我可以用sql server的全文搜索插件来解决这个问题,但是我想用一种更简单的方式来解决这个问题。
发布于 2010-08-12 15:47:46
select * from books where title COLLATE Latin1_General_CI_AI like '%casa%'当然,你应该选择符合你的.只需改变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%'发布于 2010-08-12 15:48:00
您需要使用口音不敏感的排序子句。
发布于 2012-01-01 14:13:43
如果您需要在linq中这样做,我认为您必须先删除搜索字符串中的解析词,然后再进行linq查询.应该管用的..。
https://stackoverflow.com/questions/3469401
复制相似问题