当前位置: 首页 > news >正文

MySql查询 值存在但查不到

MySql查询 值存在但查不到

  • 问题描述
  • 解决问题
    • 验证问题
    • 处理问题

问题描述

今天遇到一个很奇怪的问题,发现sql在按照一个sn字段进行更新的时候,总是更新失败,查看程序日志发现更新个数总是0,但是对比数据,数据库中确实有这个数据,接下来根据数据进行查询,发现也是无法查询到

select * from table where sn = 'fsiqj';

解决问题

  1. 由于我是使用excel导入的数据,首先怀疑是否是excel单元格格式的问题,遂更换单元格格式为文本类型,再次查询,依旧查询不到
  2. 思考可能是由于字符编码问题导致的,查询资料

可能由于sn的末尾有一个额外的字符 ‘’,这是 Unicode 字符 U+FEFF 的表示(在 HTML/XML 中常被渲染为 ,但在字符串中它是一个实际的字符)。
这导致字符串长度变为 33 个字符(32 个原始字符 + 1 个 U+FEFF 字符)。
U+FEFF 是一个“零宽不折行空格”,在文本中通常不可见(尤其在图形界面中),但在数据库字符串比较时,它会被视为有效字符,因此会影响匹配结果。

字符集和编码的影响: 如果数据库使用 UTF-8 编码,U+FEFF 会被编码为字节序列 EF BB BF。但在字符串比较中,它被视为一个字符。如果您的数据库或客户端工具(如 SQL 客户端)在复制粘贴值时不小心引入了这个字符(常见于从网页、文本编辑器或导出数据中复制时),就会导致这种问题。

验证问题

我的mysql是utf-8的编码
通过sql语句查询这个值的长度和16进制字符

SELECT LENGTH("") AS length,HEX("") AS hex_representation;

结果显示这个值的长度确实比我自己手写输入的值 多了3
16进制文本输出的末尾也有 EFBBBF

处理问题

这个问题是我导入数据的时候的数据问题,导致存储的数据出现的问题,因此对数据库数据进行了清理,若是其他地方的数据问题,可根据具体情况解决

-- 仅去除末尾的 EFBBBF
UPDATE table
SET sn = CASE WHEN RIGHT(HEX(sn), 6) = 'EFBBBF'THEN UNHEX(LEFT(HEX(sn), LENGTH(HEX(sn)) - 6))ELSE snEND
WHERE HEX(sn) LIKE '%EFBBBF';

The End.

http://www.dtcms.com/a/284441.html

相关文章:

  • 深度学习G3周:CGAN入门(生成手势图像)
  • 理解欧拉角:定义、转换与应用
  • HTTPS的工作原理及DNS的工作过程
  • 【LeetCode 热题 100】108. 将有序数组转换为二叉搜索树
  • SpringBoot使用ThreadLocal共享数据
  • 2021-07-21 VB窗体求范围质数(Excel复制工作簿)
  • Python 基础语法与数据类型(十三) - 实例方法、类方法、静态方法
  • 【测试100问】没有接口文档的情况下,如何做接口测试?
  • MinIO:开源对象存储解决方案的领先者
  • DiffPy-CMI详细安装教程
  • 【Vue进阶学习笔记】组合式API(Composition API)
  • Go 程序无法使用 /etc/resolv.conf 的 DNS 配置排查记录
  • React hooks——memo
  • 【软件开发】主流 AI 编码插件
  • 关于el-table异步获取数据渲染动态列数据赋值列数据渲染时title高度异常闪过问题
  • 深度解析:基于EasyX的C++黑白棋AI实现 | 算法核心+图形化实战
  • 数据呈现进阶:漏斗图与雷达图的实战指南
  • 基于Echarts的气象数据可视化网站系统的设计与实现(Python版)
  • Idea使用git不提示账号密码登录,而是输入token问题解决
  • 【解决方案】yakit流量转发到mitmproxy
  • 浅谈 awk 中管道的用法
  • zynq mpsoc switch级联ssd高速存储方案
  • 贴吧项目总结二
  • mysql——搭建MGR集群
  • CommonJS 功能介绍
  • 基于dcmtk的dicom工具 第二章 图像接受StoreSCP(2)
  • Python Day16
  • Java行为型模式---备忘录模式
  • 从零开始的云计算生活——第三十三天,关山阻隔,ELK日志分析
  • rtp传输推流h265