Sql Server查询包含乱码/空格符无法查出数据

今天开发遇到了一个离谱的问题,在接口查sqlserver时,有一部分以空格结尾的列查不到,先检查是否是参数有问题:

  1. 在接收ajax的参数时,出现了&nbsp,如下图
  2. 印象里在之前开发接受参数时,如果传过来的字符串最后是以空格结尾也会传回来,一下子以为自己记错了,决定还是试试一下如下图。可以看到下面两张图,结尾就算是空格结尾也不会转为&nbsp

  3. 发现查不到数据的原因应该就是这个&nbsp,本着试一试的态度,直接把sql打印出来,在sqlserver里直接查询,如下图(只保留了sql关键部分)
    a. 原来的查询:我们可以看到原来参数就包含&nbsp,查不到数据的

    b. 我们把&nbsp改成空格,再进行查询,如下图:
    可以看到,我是手动改成了空格,但还是查询不到数据,所以我怀疑是数据源就没有这个数据
    !!!:解释一下为什么一开始不检查数据源:原因是业务场景里这个查询条件是先从数据库显示在前端,再拿这个值查找别的,所以一开始觉得数据源没问题

    c. 奇怪的事情发生了,检查数据源如下图
    上面的是手动加的空格;
    下面的是直接从列里复制的
    末尾都有一个空格,肉眼可见是一样的,但是一个有数据,一个没有数据
  4. 这个时候问题基本可以确定了,这是一个类似空格,但是不是空格的特殊符号,
    而且这个符号显示在html、SQL server、vs2019上均为空格,前端把这个符号通过ajax传输到后端时,会转成&nbsp
    为了验证这个猜想,我们在vs2019进行如下图操作,
    ①中是比较空格符 和 直接从数据库复制出来的“空格符”
    ②中是直接比较两个空格符
    并且比较了两个字符的GetHashCode();
    可以发现两个并不相同
  5. 解决方案
    两种解决方法
    可以直接从数据源里更改,即把这个特殊符号改成空格符;
    或者从接口里判断这个特殊符号,因为前端会把这个特殊符号识别成&nbsp,后台可以直接把&nbsp转换成这个特殊符号,如下,注意那个空格符是数据库里直接复制出来的特殊符号
query = query.Replace(" ", " ");

Sql Server查询包含nbsp/乱码/空格符无法查出数据相关推荐

  1. sql server查询某一字段不重复的数据_初识数据库

    数据模型 层次模型 以上下级的层次关系来组织数据的一种方式,其数据结构类似一棵树: 网状模型 将每个数据节点与其他很多节点连接起来,其数据结构类似城市的交通网: 关系模型 将数据看做一个二维表格,数据 ...

  2. sql server 查询本周、本月所有天数的数据

    2019独角兽企业重金招聘Python工程师标准>>> 查询本月所有的天数: --本月所有的天数 select convert(varchar(10),dateadd(DAY,t2. ...

  3. SQL Server查询本周、本年所有天数数据

    sql server 查询本周.本月所有天数的数据 查询本月所有的天数: --本月所有的天数 select convert(varchar(10),dateadd(DAY,t2.number,t1.d ...

  4. SQL Server 查询性能优化——覆盖索引(二)

    在SQL Server 查询性能优化--覆盖索引(一)  中讲了覆盖索引的一些理论. 本文将具体讲一下使用不同索引对查询性能的影响. 下面通过实例,来查看不同的索引结构,如聚集索引.非聚集索引.组合索 ...

  5. sql查询oracle数据,sql-server – 从SQL Server查询Oracle数据库

    我有一个Oracle 11g XE数据库,我想将其转移到SQL Server Express 2005中. 起初我以为我只是在Oracle中生成表作为SQL,操纵数据格式,并在SQL Server中运 ...

  6. Sql Server查询性能优化之走出索引的误区

    据了解绝大多数开发人员对于索引的理解都是一知半解,局限于大多数日常工作没有机会.也什么没有必要去关心.了解索引,实在哪天某个查询太慢了找到查询条件建个索引就ok,哪天又有个查询慢了,再建立个索引就是, ...

  7. 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 ...

  8. sql查询初学者指南_面向初学者SQL Server查询执行计划–非聚集索引运算符

    sql查询初学者指南 Now that we understand what Clustered Index Scan and Clustered Index Seek are, how they o ...

  9. SQL Server 查询处理中的各个阶段

    SQL Server 查询处理中的各个阶段 SQL 不同于与其他编程语言的最明显特征是处理代码的顺序.在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是FROM子句,尽管 ...

最新文章

  1. leetcode算法题--对链表进行插入排序
  2. [PHP]用PHPUnit进行行为驱动开发(Behaviour-Driven Development)
  3. matplotlib.pyplot绘制函数图像希腊字母latex效果设置
  4. VirtualBox虚拟机菜单选项隐藏后重现
  5. Java ArrayList removeRange()方法与示例
  6. linux 时区异常修正
  7. 六、物理数据模型(PDM逆向工程)
  8. Android Studio如何打jar包
  9. numpy.cumsum()函数
  10. Eclipse 新手使用教程
  11. JAVA实现网页版斗地主_Java实现斗地主简化版
  12. 酒吧、ktv、夜店收银系统分析
  13. C语言里程序编译无误但运行会弹出程序已停止运行是为什么?
  14. 十折交叉验证python_k折交叉验证(matlab和python程序实现)
  15. 安规电容知识详解,X电容和Y电容
  16. python写入csv或excel时,数字0开头丢失的解决方案
  17. 监控服务器网卡上传和下载网速的脚本
  18. uboot环境下mmc操作_android uboot中的mmc命令
  19. 三星打印机通过无线网连接到服务器,多种连接方式 三星无线打印轻松享
  20. 图片打开太暗看不清并且手机传给电脑的视频打开卡

热门文章

  1. kivy--入门(一)(Windows)python
  2. GTX1080ti 安装cuda-8.0和cudnn-7.5
  3. 服务器主机安全风险有哪些?如何防止安全风险?
  4. Air780E烧录教程
  5. python实现一元线性回归分析的全部过程
  6. 漏洞利用exploit ——跳板技术 静待春暖花开之时,你我相见 听你说一声 好久不见
  7. 【人脸识别】SVM和PCA人脸识别【含GUI Matlab源码 369期】
  8. 新时代城市治理体系智慧大脑的建设误区详情分析
  9. 软件工程与计算II-17-软件构造
  10. java io框架图_Java IO流体系继承结构图解析