修改SQLServer排序规则,特殊中文字符

碰到特殊中文在SQLServer 中可以保存但是无法搜索的问题,经多方请教发现是数据库排序规则的问题。排序规则请自行百度、Google等等。

一般情况下安装时的默认排序规则时Chinese_PRC_CI_AS,对特殊的中文字符不支持。需要把排序规则改为Chinese_PRC_BIN。

修改步骤:

1.如果有表值函数,需要删除表值函数(注意备份以还原)。否则会报排序规则依赖错误。

2.将数据库限制访问属性修改为single_user.

3.执行以下SQL语句,即可执行成功。

ALTER DATABASE databasename COLLATE Chinese_PRC_BIN

4.修改表列的排序规则。哭。。。。

alter table TableName alter column ColumnName nvarchar(200) collate Chinese_PRC_BIN

 

举个栗子:

create table test1
(
name nvarchar(100),
name1 varchar(100)
)
insert into test1 values(N'䓛',N'䓛')
insert into test1 values(N'哈哈',N'哈哈哈')
select * from test1 where name like N'%䓛%'

修改排序规则前,使用查询语句会查出全集,不带N,是空集。

修改排序规则后,可以正确查出结果。

特别注意:

1.字段一定要使用nvarchar,保存时需要带N,否则乱码。

2.对应的,查询时也要带N,否则查询得到的是空集。

坑坑坑:

由于该排序规则时区分大小写,在修改以后,查询表名称、字段名称都必须严格和数据库中表名称、字段名称一模一样,否则报错查询不到。应用程序难免会有不一样的,要改。

流泪建议:

如果不是万不得已,千万不要改,否则应用程序代码改起来没完,┭┮﹏┭┮

 

建议只对部分表的部分字段进行修改,可以完美避开上诉 坑 

参考:https://blog.csdn.net/ares1986/article/details/5793284

           https://www.cnblogs.com/kerrycode/archive/2013/12/07/3463208.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server排序规则是用于指定数据库中字符数据的排序方式。在安装SQL Server数据库时,默认的排序规则是根据系统区域设置自动生成的。例如,在Windows服务器系统区域设置为英语(美国)时,默认安装的排序规则是SQL_Latin1_General_CP1_CI_AS。如果需要修改排序规则,可以按照以下步骤进行操作: 1. 修改表达式排序规则:在SQL查询时,默认排序规则无法覆盖,但可以在查询表达式中指定排序规则进行转换查询。 2. 修改列级排序规则:可以针对特定的列修改排序规则。这可以通过修改列的数据类型或使用ALTER TABLE语句来实现。 3. 修改数据库级排序规则:如果需要修改整个数据库的排序规则,可以使用ALTER DATABASE语句来更改。在执行ALTER DATABASE之前,需要中断所有对该数据库的访问。 要查看系统中支持的全部排序规则列表,可以使用以下查询: SELECT * FROM ::fn_helpcollations() 要查看当前系统的排序规则,可以使用以下查询: SELECT SERVERPROPERTY('Collation') 要修改数据库的排序规则,可以使用以下语法: ALTER DATABASE 数据库名 COLLATE 排序规则名 例如,要将数据库的排序规则修改为区分大小写的简体中文排序规则(Chinese_PRC_CS_AS),可以使用以下语句: ALTER DATABASE test COLLATE Chinese_PRC_CS_AS 请注意,在执行ALTER DATABASE之前,需要中断所有对该数据库的访问。 #### 引用[.reference_title] - *1* *2* [SQL sever 排序规则介绍](https://blog.csdn.net/li_jerry/article/details/124845305)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [SQL Server 排序规则](https://blog.csdn.net/E_eric/article/details/9260643)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值