sql搜索包含变音符号的字段
Posted
技术标签:
【中文标题】sql搜索包含变音符号的字段【英文标题】:sql search on fields containing diacritics 【发布时间】:2011-03-29 00:25:53 【问题描述】:我正在使用 Sql server 2008 express edition 进行网站搜索。
我有一个 'Books' 表,其中有一个名为 'Title' 的字段,其中包含包含罗马尼亚(拉丁)字符的标题。
好吧,如果用户在搜索字段中插入一个单词,例如:'casa',并且我在 db 中有一个标题,例如:'test casă test',我想要展示那本书但是:
select * from books where title like '%casa%'
找不到...
您知道在选择时删除变音符号的任何功能吗?
我知道我可以用 sql server 的全文搜索插件来解决这个问题,但我想用一种更简单的方式来解决这个问题。
【问题讨论】:
【参考方案1】:select * from books where title COLLATE Latin1_General_CI_AI like '%casa%'
当然,你应该选择一个与你匹配的排序规则......只需将最后的 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%'
【讨论】:
另外,如果您总是希望搜索不区分重音,您可以更改数据库的排序规则。 还有一个问题:你也知道如何在 linq 中执行此操作吗?非常感谢! @Cristian Boariu:对不起,我没有。也许你无论如何都不能......***.com/questions/488249【参考方案2】:您需要使用不区分重音的整理子句。
【讨论】:
【参考方案3】:如果您需要在 linq 中执行此操作,我认为您必须先删除搜索字符串中的变音符号,然后再进行 linq 查询......它应该可以工作......
【讨论】:
以上是关于sql搜索包含变音符号的字段的主要内容,如果未能解决你的问题,请参考以下文章
带有德语变音符号的 JSON Jackson + HTTPClient
MongoDB diacriticInSensitive 搜索未按预期显示所有重音(带有变音符号的单词)行,反之亦然
Python2 / Windows7:打开包含德语变音符号的文件名