您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

sqlserver 修改某张表某字段 排序规则;sqlserver 少量中文 问号?;sqlserver 生僻字;sqlserver 少量中文乱码;sqlserver COLLATE用法;sqlserver Chinese_PRC_CI_AS Chinese_PRC_BIN;

bubuko 2022/1/25 19:03:40 sqlserver 字数 3183 阅读 1036 来源 http://www.bubuko.com/infolist-5-1.html

问题:sqlserver查询中文:?、?? ,查不出来! 而且在后缀名.sql 和.txt文件保存变成问号,需要将编码改为为UTF-8,才能正确保存。 一、测试案例: create table t2(id int,name nvarchar(50) not null, )insert into t2 ...

问题:sqlserver查询中文:?、 ? ,查不出来!

而且在后缀名.sql 和.txt文件保存变成问号,需要将编码改为为UTF-8,才能正确保存。

一、测试案例:

create table t2(
id int,
name nvarchar(50) not null,
)
insert into t2 values(1,N‘好‘)
insert into t2 values(2,N‘的‘)
insert into t2 values(3,N‘?‘)
insert into t2 values(4,N‘?‘)
--注意insert一定要带N,且字符串类型为nvarchar,否则sqlserver显示是问号?
select *from t2 where name =N‘?‘
结果错误
3 ?
4 ?
--等同于查询空字符串
select *from t2 where name =N‘‘
3 ?
4 ?

--解决方案一:修改某张表某个字段的排序规则
ALTER TABLE t2 ALTER COLUMN name nvarchar(50) COLLATE Chinese_PRC_BIN --中文简体 二进制排序规则
select *from t2 where name =N‘?‘
结果正确
3 ?
--注意如果此时name 字段not null会变成null,要改回来。
ALTER TABLE t2 ALTER COLUMN name nvarchar(50) not null

--解决方案二:
--如果不想修某张表某个字段的排序规则,可以查询是添加 COLLATE Chinese_PRC_BIN
--先恢复成原始排序规则
ALTER TABLE t2 ALTER COLUMN name nvarchar(50) COLLATE Chinese_PRC_CI_AS -- 中文简体 不区分大小写、区分重音、不区分假名、不区分全半角
select * from t2 where name = N‘?‘ COLLATE Chinese_PRC_BIN
查询结果正确:
4 ?

--解决方案三:
--创建的时候 直接设置某张表某字段排序规则
delete from t2
create table t1(
id int,
name varchar(50) collate Chinese_PRC_BIN --not null 需要另外设置
)
ALTER TABLE t2 ALTER COLUMN name nvarchar(50) not null

 


--解决方案四: 针对 Entity Framework6、Entity Framework Core (没有去测试)
1查询中的显式排序规则
var customers = context.Customers
.Where(c => EF.Functions.Collate(c.Name, "SQL_Latin1_General_CP1_CS_AS") == "John")  //sql排序规则可能不对应
.ToList();

2列排序规则
使用EF Core管理数据库架构时,以下内容将 属性的 列配置为不区分大小写,而该数据库已配置为区分 Name 大小写:
modelBuilder.Entity<Customer>().Property(c => c.Name)
.UseCollation("SQL_Latin1_General_CP1_CI_AS");

3数据库排序规则
使用EF Core管理数据库架构时,模型的 方法中的以下内容将SQL Server OnModelCreating 数据库配置为使用区分大小写的排序规则:
modelBuilder.UseCollation("SQL_Latin1_General_CP1_CS_AS");

相关文档:

COLLATE语法介绍

https://docs.microsoft.com/zh-cn/sql/t-sql/statements/collations?view=sql-server-ver15

sqlserver 排序规则介绍:

https://docs.microsoft.com/zh-cn/sql/relational-databases/collations/collation-and-unicode-support?view=sql-server-ver15

EF6、EFCode 排序规则介绍

https://docs.microsoft.com/zh-cn/ef/core/miscellaneous/collations-and-case-sensitivity

https://www.bookstack.cn/read/ef-core-zh/36b68308cefb1f5b.md

同类文章:

SQL SERVER 生僻字查询问题和关键字COLLATE

https://blog.csdn.net/sinat_28984567/article/details/109253444

https://blog.csdn.net/johnf_nash/article/details/78947219

 

sqlserver 修改某张表某字段 排序规则;sqlserver 少量中文 问号?;sqlserver 生僻字;sqlserver 少量中文乱码;sqlserver COLLATE用法;sqlserver Chinese_PRC_CI_AS Chinese_PRC_BIN;

原文:https://www.cnblogs.com/hao-1234-1234/p/14874521.html


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶