SQL SERVER中生僻字问题存储与查询问题

Posted xuyufeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL SERVER中生僻字问题存储与查询问题相关的知识,希望对你有一定的参考价值。

以下仅记录碰到的几个问题

1.首先字段设置为varchar的时候存储后无法进行正常的显示 显示为?

  此状态下匹配查询或者Like模糊查询都没问题

2.将字段设置为nvarchar,在进行插入或者跟新时入:insert into teset set membername=‘秦? ‘ 此时?字仍然只显示?, insert into teset set membername=N‘秦? ‘时可正常插入显示

  此状态下用匹配查询=可以正常查询到,当使用like模糊查询时 ?没有被识别到  like N‘%秦?%‘跟  like N‘%秦%‘查到的结果一样。

 

技术图片

 

既要显示正确又要正确查询解决办法

select * from db_owner.systemMember where memberName like N‘%秦?%‘ collate  Chinese_PRC_BIN 使用强制定义字符集排序
后因为使用的时linq to sql查询,没法指定字符集排序。
后将单表内但单字段的字符集排序从Chinese_PRC_CI_AS改为了Chinese_PRC_BIN进行查询正确。(此处因为没有用到临时表或跨表的字段匹配查询,所以仅更改了单字段的字符集排序。如果涉及到跨表跨字段匹配或者临时表因统一调整为同一字符集排序)。
 
 
扩展字符集相关知识:

    解析:Chinese_PRC_BIN ;

      Chinese_PRC为简体中文UNICODE字符集

      _BIN 二进制排序 
      _CI(CS) 是否区分大小写,CI不区分,CS区分
      _AI(AS) 是否区分重音,AI不区分,AS区分   
      _KI(KS) 是否区分假名类型,KI不区分,KS区分 
        _WI(WS) 是否区分宽度 WI不区分,WS区分

以上是关于SQL SERVER中生僻字问题存储与查询问题的主要内容,如果未能解决你的问题,请参考以下文章

如何使用存储过程在 SQL Server 中生成表的数据脚本文件?

在 SQL Server 2005 中生成多个 SQL 任务

如何在 Microsoft PowerBI 中使用 SQL Server 存储过程?

SQL Server 2005 中没有过程的查询计划

如何在 sql server 中生成随机 nvarchars

如何在 SQL Server 中生成唯一递增的整数值?