如上图,在查询字段加上大写字母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值居然不一样,后面多了个‬
输入的值后面既没有空格也没有其他特殊字符,而且点击也选不中(又没有)此值【断点从后台跟踪,也看不到后面跟有‬,但实际是有,所以查询不出数据】
网上查询:https://blog.csdn.net/w390058785/article/details/80692930(他猜想字符‬字符是用于占位的?)。
其实‬是Unicode控制字符(就是特殊的Unicode字符),PDF: 让前面运算法则结束的字符。
很多时候input标签明明没有值也没有空格可总是不为空可考虑此问题。
结论:导致两句一样sql或网页查询不出数据(不包括数据库编码及网页或系统其他问题),可考虑是由于字符串格式(复制操作)导致。具体可将字符串复制到网页input里检查。
上面操作中查询为空即为从Excel单元格复制的,至于键盘输入的那个zmdadmin是需要将username及后面的一起重新输入