2012-07-14 165 views
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',但它没有工作...

+0

可能的重复 - http://stackoverflow.com/questions/1831105/how-to-do-a-case-sensitive-search-in-where-clause-im-using-sql-server – vmvadivel 2012-07-15 04:51:48

回答

5

您可以覆盖使用COLLATE关键字在比较数据库或列级别定义排序规则:

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

+1

+1使用对此进行整理。 – Oded 2012-07-14 20:29:36

+0

谢谢。在查找排序规则查询时,它将不会返回任何内容。阿拉伯文应该用阿拉伯文代替。 – 2012-07-14 20:36:09

+1

谢谢,我忘了。它现在更新为'阿拉伯%'。 – devio 2012-07-14 20:37:49

8

SQL Server不是以区分大小写的方式搜索数据库,也不是区分大小写。它根据所涉专栏的collation来完成。有区分大小写和不区分大小写的排序规则。我建议你阅读Collation and Unicode Support。做不是开始做UPPERLOWER比较,这是不正确的做法,并有严重的性能影响,由于sarg能力。

+0

感谢您对不进行“UPPER”和“LOWER”比较的建议。 – 2012-07-14 20:37:38