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

在SQL Server中遇到生僻字存储和查询的问题,当字段为varchar时显示为问号,而设置为nvarchar后,使用N前缀才能正常插入。匹配查询正常,但LIKE模糊查询时生僻字无法识别。解决方法涉及到字符集和排序规则,如Chinese_PRC_BIN,考虑了大小写、重音、假名类型和宽度的区分问题。
摘要由CSDN通过智能技术生成

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

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进行查询正确。(此处因为没有用到临时表或跨表的字段匹配查询,所以仅更改了单字段的字符集排序。如果涉及到跨表跨字段匹配或者临时表因统一调整为同一字符集排序)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值