我在Microsoft SQL Server 2005上有一个Arabic_BIN
排序规则的数据库。
如果我运行此查询:
SELECT ID FROM maj_Users WHERE UserName = 'mahdi'
我什么都没得到,但是如果我运行这个查询:
SELECT ID FROM maj_Users WHERE UserName = 'Mahdi'
我会得到一个单元格...似乎SQL Server正在敏感地搜索数据库,但我想搜索不区分大小写的数据库。
有什么办法吗?
编辑:我也试过SELECT ID FROM maj_Users WHERE UserName LIKE 'mahdi'
,但它没有用......
答案 0 :(得分:8)
SQL Server不是以区分大小写的方式搜索数据库,也不是在不区分大小写的情况下搜索数据库。它根据所涉及的列的collation来完成。区分大小写和不区分大小写的排序规则。我建议你阅读Collation and Unicode Support。 不开始执行UPPER
或LOWER
比较,这不是正确的方法,并且由于sarg-ability而具有严重的性能影响。
答案 1 :(得分:5)
您可以使用COLLATE关键字覆盖数据库或列级别上定义的COLLATION:
SELECT ID FROM maj_Users WHERE UserName = 'Mahdi' COLLATE [collation name]
要查找不区分大小写的阿拉伯语的排序规则,请使用查询
select * from fn_helpcollations()
where name like 'Arabic%' and name like '%CI%'
Arabic_CI_AI或Arabic_100_CI_AI似乎是您的正确选择。