Microsoft SQL Server中不区分大小写的搜索

时间:2012-07-14 20:19:31

标签: sql sql-server sql-server-2005

我在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',但它没有用......

2 个答案:

答案 0 :(得分:8)

SQL Server不是以区分大小写的方式搜索数据库,也不是在不区分大小写的情况下搜索数据库。它根据所涉及的列的collation来完成。区分大小写和不区分大小写的排序规则。我建议你阅读Collation and Unicode Support开始执行UPPERLOWER比较,这不是正确的方法,并且由于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似乎是您的正确选择。