Sql Server查询包含nbsp/乱码/空格符无法查出数据
Sql Server查询包含乱码/空格符无法查出数据
今天开发遇到了一个离谱的问题,在接口查sqlserver时,有一部分以空格结尾的列查不到,先检查是否是参数有问题:
- 在接收ajax的参数时,出现了 ,如下图
- 印象里在之前开发接受参数时,如果传过来的字符串最后是以空格结尾也会传回来,一下子以为自己记错了,决定还是试试一下如下图。可以看到下面两张图,结尾就算是空格结尾也不会转为 
- 发现查不到数据的原因应该就是这个 ,本着试一试的态度,直接把sql打印出来,在sqlserver里直接查询,如下图(只保留了sql关键部分)
a. 原来的查询:我们可以看到原来参数就包含 ,查不到数据的
b. 我们把 改成空格,再进行查询,如下图:
可以看到,我是手动改成了空格,但还是查询不到数据,所以我怀疑是数据源就没有这个数据
!!!:解释一下为什么一开始不检查数据源:原因是业务场景里这个查询条件是先从数据库显示在前端,再拿这个值查找别的,所以一开始觉得数据源没问题
c. 奇怪的事情发生了,检查数据源如下图
上面的是手动加的空格;
下面的是直接从列里复制的
末尾都有一个空格,肉眼可见是一样的,但是一个有数据,一个没有数据
- 这个时候问题基本可以确定了,这是一个类似空格,但是不是空格的特殊符号,
而且这个符号显示在html、SQL server、vs2019上均为空格,前端把这个符号通过ajax传输到后端时,会转成 
为了验证这个猜想,我们在vs2019进行如下图操作,
①中是比较空格符 和 直接从数据库复制出来的“空格符”
②中是直接比较两个空格符
并且比较了两个字符的GetHashCode();
可以发现两个并不相同
- 解决方案
两种解决方法
可以直接从数据源里更改,即把这个特殊符号改成空格符;
或者从接口里判断这个特殊符号,因为前端会把这个特殊符号识别成 ,后台可以直接把 转换成这个特殊符号,如下,注意那个空格符是数据库里直接复制出来的特殊符号
query = query.Replace(" ", " ");
Sql Server查询包含nbsp/乱码/空格符无法查出数据相关推荐
- sql server查询某一字段不重复的数据_初识数据库
数据模型 层次模型 以上下级的层次关系来组织数据的一种方式,其数据结构类似一棵树: 网状模型 将每个数据节点与其他很多节点连接起来,其数据结构类似城市的交通网: 关系模型 将数据看做一个二维表格,数据 ...
- sql server 查询本周、本月所有天数的数据
2019独角兽企业重金招聘Python工程师标准>>> 查询本月所有的天数: --本月所有的天数 select convert(varchar(10),dateadd(DAY,t2. ...
- SQL Server查询本周、本年所有天数数据
sql server 查询本周.本月所有天数的数据 查询本月所有的天数: --本月所有的天数 select convert(varchar(10),dateadd(DAY,t2.number,t1.d ...
- SQL Server 查询性能优化——覆盖索引(二)
在SQL Server 查询性能优化--覆盖索引(一) 中讲了覆盖索引的一些理论. 本文将具体讲一下使用不同索引对查询性能的影响. 下面通过实例,来查看不同的索引结构,如聚集索引.非聚集索引.组合索 ...
- sql查询oracle数据,sql-server – 从SQL Server查询Oracle数据库
我有一个Oracle 11g XE数据库,我想将其转移到SQL Server Express 2005中. 起初我以为我只是在Oracle中生成表作为SQL,操纵数据格式,并在SQL Server中运 ...
- Sql Server查询性能优化之走出索引的误区
据了解绝大多数开发人员对于索引的理解都是一知半解,局限于大多数日常工作没有机会.也什么没有必要去关心.了解索引,实在哪天某个查询太慢了找到查询条件建个索引就ok,哪天又有个查询慢了,再建立个索引就是, ...
- sql server 缓存_了解SQL Server查询计划缓存
sql server 缓存 Whenever a query is run for the first time in SQL Server, it is compiled and a query p ...
- sql查询初学者指南_面向初学者SQL Server查询执行计划–非聚集索引运算符
sql查询初学者指南 Now that we understand what Clustered Index Scan and Clustered Index Seek are, how they o ...
- SQL Server 查询处理中的各个阶段
SQL Server 查询处理中的各个阶段 SQL 不同于与其他编程语言的最明显特征是处理代码的顺序.在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是FROM子句,尽管 ...
最新文章
- leetcode算法题--对链表进行插入排序
- [PHP]用PHPUnit进行行为驱动开发(Behaviour-Driven Development)
- matplotlib.pyplot绘制函数图像希腊字母latex效果设置
- VirtualBox虚拟机菜单选项隐藏后重现
- Java ArrayList removeRange()方法与示例
- linux 时区异常修正
- 六、物理数据模型(PDM逆向工程)
- Android Studio如何打jar包
- numpy.cumsum()函数
- Eclipse 新手使用教程
- JAVA实现网页版斗地主_Java实现斗地主简化版
- 酒吧、ktv、夜店收银系统分析
- C语言里程序编译无误但运行会弹出程序已停止运行是为什么?
- 十折交叉验证python_k折交叉验证(matlab和python程序实现)
- 安规电容知识详解,X电容和Y电容
- python写入csv或excel时,数字0开头丢失的解决方案
- 监控服务器网卡上传和下载网速的脚本
- uboot环境下mmc操作_android uboot中的mmc命令
- 三星打印机通过无线网连接到服务器,多种连接方式 三星无线打印轻松享
- 图片打开太暗看不清并且手机传给电脑的视频打开卡