日期:2014-05-17  浏览次数:20352 次

数据库无法查询中文的问题
本帖最后由 cqulyk 于 2012-12-18 13:30:37 编辑
我在查询数据库中数据的时候,发现如果查询条件中有中文的话,无法查出结果。例如下面代码
SELECT PBM.Name,PBM.PhoneNumber,PBG.GroupName FROM PhoneBookMain AS PBM INNER JOIN PhoneBookGroup AS PBG ON PBM.GroupID = PBG.GroupID
WHERE Name = N'周杰伦'

实际上我的表中有这条数据。

我上网搜索了一下解决方法,
1 就是在查询值前加N,如
 WHERE Name = '周杰伦'
 
2 就是修改数据库的编码:
 ALTER DATABASE [数据库名] COLLATE Chinese_PRC_CI_AS
 

测试结果是,第一种方法管用,能查出需要的数据,但在执行第二种方法的时候,我得到如下错误:Msg 5030, Level 16, State 2, Line 3
无法用排他锁锁定该数据库,以执行该操作。
Msg 5072, Level 16, State 1, Line 3
ALTER DATABASE 失败。无法将数据库 'Test' 的默认排序规则设置为 Chinese_PRC_CI_AS。

我希望能用第二种方法,因为这样一劳永逸的解决了编码的问题,不用每次查询的时候都加上N。
请问,如果解决这个问题?
------解决方案--------------------
第二种方法:关闭所有连接,不要在这个数据库下查询,右击数据库,在属性中更改其排序规则.