推广 热搜: 公司  快速  上海  中国  未来    企业  政策  教师  系统 

sql server必须在前面加N,才能查询出数据以及乱码等问题(Unicode字符串常量、‬)

   日期:2024-11-09     作者:xinet    caijiyuan   评论:0    移动:http://dfvalve.xrbh.cn/mobile/news/9640.html
核心提示:如上图,在查询字段加上大写字母N,就能查询出结果。很多时候都是不用也能查询出数据,但是也有列外,如下图:1和2,3和4分别是

sql server必须在前面加N,才能查询出数据以及乱码等问题(Unicode字符串常量、<em></em>‬)

如上图,在查询字段加上大写字母N,就能查询出结果。很多时候都是不用也能查询出数据,但是也有列外,

如下图:

1和2,3和4分别是相同的查询语句,但是1和2中只有2能查询出数据,3和4中只有4能查询出数据。

然而在1和3查询前分别加上大写的N就能查询出数据。一般查询中文,或不知原因的查询不出数据可以试试加上N。

简单了解下N的作用:

N‘zmdadmin’ 代表是一个Unicode字符常量(双字节,一个字符占两个字节),而没有N的代表字符常量(单字节,一个字符占一个字节)。

而中文一个汉字就要占两个字节,所以要用N'xxx'强制转换为Unicode编码的字符,从而避免乱码。但一般数据库默认编码及排序规则已经设置好了。

数据库从英文版或者改变默认编码时需注意原有已存在数据的编码。

---------------------------------------------------------------------------------------------------------------------------------------------

那原因很明显就是编码问题导致查询为空,但两句sql一模一样,而且即使从键盘重新输入1和3的zmdadmin也还是一样。

复制到网页input进行查询:

也未能查询出数据,但是有一个发现:输入的值和input的value值居然不一样,后面多了个&#8236

输入的值后面既没有空格也没有其他特殊字符,而且点击也选不中(又没有)此值【断点从后台跟踪,也看不到后面跟有&#8236,但实际是有,所以查询不出数据】

 

网上查询:https://blog.csdn.net/w390058785/article/details/80692930(他猜想字符&#8236字符是用于占位的?)。

其实&#8236是Unicode控制字符(就是特殊的Unicode字符),PDF:  让前面运算法则结束的字符。

很多时候input标签明明没有值也没有空格可总是不为空可考虑此问题。

 

 结论:导致两句一样sql或网页查询不出数据(不包括数据库编码及网页或系统其他问题),可考虑是由于字符串格式(复制操作)导致。具体可将字符串复制到网页input里检查。

上面操作中查询为空即为从Excel单元格复制的,至于键盘输入的那个zmdadmin是需要将username及后面的一起重新输入

本文地址:http://dfvalve.xrbh.cn/news/9640.html    迅博思语资讯 http://dfvalve.xrbh.cn/ , 查看更多
 
标签: 字符串
 
更多>同类行业资讯
0相关评论

新闻列表
企业新闻
推荐企业新闻
推荐图文
推荐行业资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2023022329号