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

mysql中数据不存在却查询到记录?

前言

首先看下面的查询语种

select * from AudioKnowledgeChatInfo where AudioId=297795550566600706;

查询结果如下 

 看到上面的查询结果,是不是一脸懵?这audioId明显不对啊,怎么查询到了?

原因剖析

首先我们来看看数据库表结构

可以看到,表中AudioId定义是varchar(50),但是查询sql中传入的是数字,很显然这可能是涉及到mysql的隐式类型转换问题了。我们知道mysql在进行字段查询的时候,varchar和int,bigint的比较时,会把varchar类型转换成对应的int或者bigint,这时可能会造成精度丢失,比较不准确问题。

我们把上面的sql修改下

select * from AudioKnowledgeChatInfo where AudioId='297795550566600706';

再次查询下,发现查询不到数据了。

总结

mysql的类型隐式转换,会导致索引失效问题、数据比对异常等问题,所以在表结构设计以及sql编写的时候还是要多加注意,避免这种错误。

http://www.lryc.cn/news/482069.html

相关文章:

  • vue3+elementplus+虚拟树el-tree-v2+多条件筛选过滤filter-method
  • 【C#设计模式(4)——构建者模式(Builder Pattern)】
  • LabVIEW实验室液压制动系统
  • 解决:Loading class `com.mysql.jdbc.Driver‘. This is deprecated
  • 【寻找重复数字】——脑筋急转弯...
  • AI基础知识
  • ubuntu 22.04 硬件配置 查看 显卡
  • 【计算机网络】网络框架
  • linux nvidia/cuda安装
  • 硬件设备网络安全问题与潜在漏洞分析及渗透测试应用
  • #渗透测试#SRC漏洞挖掘#CSRF漏洞的防御
  • C++ | Leetcode C++题解之第542题01矩阵
  • RabbitMQ 不公平分发介绍
  • 测试实项中的偶必现难测bug--一键登录失败
  • 危!这些高危端口再不知道问题就大了
  • Redis集群模式之Redis Sentinel vs. Redis Cluster
  • Leetcode 罗马数字转整数
  • 东方通TongWeb替换Tomcat的踩坑记录
  • ceph介绍和搭建
  • 树莓派安装FreeSWITCH
  • OpenSSL 生成根证书、中间证书和网站证书
  • MySQL核心业务大表归档过程
  • dapp获取钱包地址,及签名
  • 探索Dijkstra算法的普遍最优性:从经典算法到最新学术突破
  • ‍️代码的华尔兹:在 Makefile 的指尖上舞动自动化的诗篇
  • 函数式编程Stream流(通俗易懂!!!)
  • 数据分析:转录组差异fgsea富集分析
  • 在Django中安装、配置、使用CKEditor5,并将CKEditor5录入的文章展现出来,实现一个简单博客网站的功能
  • AI笔筒操作说明及应用场景
  • Android自启动管控