我的网站上有基本的搜索功能。一切工作正常,除了当用户仅搜索这三个“åäö”中的一个字符时,查询将返回表中的所有项目。怎么会这样?这些角色是否在t-sql中转换为其他内容?
Dim sanitizedstring As String = helpclass.RemoveInvalidFileNameChars(txtSearch.Text, True)
Dim getArtists = From s In dc.tbl_artists _
Where s.ArtistName.ToString.ToLower.Contains(sanitizedstring) _
Select s
编辑:数据库的排序规则是 Latin1_General_CI_AI.
这种明显忽略某些字符的行为可能是由于排序规则。
由于您的排序规则是不区分重音(AI)的,åäö
因此数据库将其视为与aao
文本查询相同。
这可能是问题的根源(请注意,如果不实际知道您的数据是什么,我们就无法确定诊断信息)
将数据库的排序规则更改为区分重音(AS)。
例如,Latin1_General_CI_AS
可能是明智的第一个测试。
SQLServer排序规则文档以获取排序规则列表和更多信息
请记住,出于可用性的考虑,对口音不敏感是一种不错的默认行为。以评论为例:您是否希望用户在输入Oslo时找到城市Øslo?如果您有唯一的约束,也会产生影响(在这种情况下,它们将被视为同一键)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句