SQLServer中文乱码及查询异常
记录一次工作中SQLServer查询异常的经历。
由于直连供应商那边要求使用sqlserver接收数据,故我们又在207安装了SQLServer数据库,我这边正常建表,然后导入数据,刚开始客户类型,厂家等字段使用常用字符串类型varchar,但是导入发现除数字和字母外,中文部分乱码,后来网上了解到,中文需用到Unicode字符集,故如果含有中文需要用nvarchar,以下是网上查找到varchar与nvarchar的区别:
改成nvarchar后,立马就正常了。
但是今天,同事突然找我说,这几个中文字段有些问题,无论是精准查询还是模糊匹配都查不到。以为是同步问题,我去海豚后台去看,同步条数都正常。
Navicat查询结果:
海豚后台同步日志:
然后直接去数据库中查找也的确有这个厂家的数据。这就很奇怪,后来在网上查到了原因,原来是SQLServer 排序规则的问题,以下是网上给出的解释:
然后我在字符串前加上N测试,果然是这个原因:
将数据库排序规则更改为 Chinese_PRC_CI_AS 后,不加N也可以查询的到了:
最后附上更改数据库排序规则的SQL语句:
alter database [CustomerDB] collate Chinese_PRC_CI_AS; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 山雨欲来兮丶!
评论