1

Arabic_BIN我在 Microsoft SQL Server 2005 上有一个带有排序规则的数据库。

如果我运行此查询:

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'了,但没用...

4

2 回答 2

8

SQL Server 不以区分大小写的方式搜索数据库,也不以不区分大小写的方式搜索数据库。它根据所涉及的列的排序规则执行此操作。有区分大小写和不区分大小写的排序规则。我建议您阅读Collat​​ion and Unicode Support。不要开始做或比较,这不是正确的方法,并且由于 sarg 能力,它会对性能产生严重影响。UPPERLOWER

于 2012-07-14T20:28:16.477 回答
6

您可以使用 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 似乎是您的正确选择。

于 2012-07-14T20:27:22.153 回答