Mysql--对varchar字段用int数值来查询的问题

news2025/4/3 15:34:32

在工作中遇到的一个问题。就是mysql的一个表中的一个字段是varchar类型的,这个字段用来存储身份证,身份证正好是18位的。但是在根据身份证号来查询用户的时候,忘了给这个查询条件的身份证号加上’"",然后就产生了问题。

先来看sql语句:

select * from kaoshi_user where sfzh=330382199602254675

这条sql语句 本来以为只会查出 身份证号是330382199602254675的用户,没想到查询结果如下图:

但是把sql语句修改一下,在身份证号那个条件语句用字符串来查询,而不是整数,如:

select * from kaoshi_user where sfzh='330382199602254675'

查出来的结果那就只有这一条了。


明显上述sql语句在条件加单引号是符合我的要求的。但是不明白为什么用整数数值来查询会出现问题,在网上查询资料发现关于这方面的资料也很少。


后来在查询了官方文档后(MySql官方文档表达式中隐式类型转换),知道了结果。

得出的结论如下:

1.在字符串和数值作比较的时候,字符串和数值都会转换成浮点数进行比较。
2.字符串在转浮点数时,如果字符串开头是数字,那就一直截取,直到截取到的不是数字是其他字符为止。若开头不是数字,那么转换数值类型的结果就直接取0。(如’123abc’转成的值是123,'ab123’取到的值是0)
3.在上述中,我的字符串存储的是18位varchar类型。由于在转换成浮点数的时候,数值太大会自动转换成科学计数法,而且浮点数的精度不准确,都是取近似值,所以会出现意外的内容。也就是说我的查询sql条件在用数值类型时,由于数值太大了,所以在转换成浮点数的时候变成了科学计数法,同理被查询的字段也被转换成了浮点数的科学计数法,又由于浮点数精度的不准确,导致查询结果出现不准确。
4.如果用了字符串字段,在查询的时候最好不要用数值(如整数之类的)来查询,因为如果用数值查询,也就是如上面说的,MySql会自动把表达式中的值都转换成浮点数。而这里索引字段varchar类型进行自动转换成了浮点数,导致了索引失效。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/961477.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pinia能否替代 Vuex 的更强大状态管理工具

前序 Pinia 是 Vue.js 团队成员专门为 Vue 开发的一个全新的状态管理库,也相当于vuex5,下面关于vuex5的提案是不是觉得很像 Vuex5 的提案 Pinia和Vuex的函数 Vuex: State、Getters、Mutations(同步)、Actions(异步) Pinia: St…

【C++进阶】模板进阶

👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&#x1…

SpringBoot项目集成Druid

文章目录 一、前言二、Druid相关内容1、Druid简介1.1数据库连接池 2、项目集成Druid2.1、环境准备2.2、依赖准备2.3、编写配置文件2.4、测试访问 3、功能介绍3.1、查看数据源3.2、SQL监控3.3、URI监控 三、总结提升 一、前言 本文将介绍Druid的相关内容以及项目如何集成Druid&…

每日一题(复制带随机指针的链表)

每日一题(复制带随机指针的链表) 138. 复制带随机指针的链表 - 力扣(LeetCode) 思路: 由于每个链表还包含了一个random节点指向了链表中的随机节点,所以并不能直接照搬复制原链表。首先想到的暴力思路是复…

Self-Attention Transformer完全指南:像Transformer的创作者一样思考

本文从RNN到self-attention,再到Transformer来讲清楚整个算法。 近半年来有大量同学来找我问Transformer的一些细节问题,例如Transformer与传统seq2seq RNN的区别、self-attention层的深入理解、masked self-attention的运作机制;以及各种Tr…

2018ECCV Can 3D Pose be Learned from2D Projections Alone?

摘要 在计算机视觉中,从单个图像的三维姿态估计是一个具有挑战性的任务。我们提出了一种弱监督的方法来估计3D姿态点,仅给出2D姿态地标。我们的方法不需要2D和3D点之间的对应关系来建立明确的3D先验。我们利用一个对抗性的框架,强加在3D结构…

vue通过draggable实现拖拽功能

1. 官方文档 2. 安装 yarn add vuedraggable npm i -S vuedraggable <script src"//cdnjs.cloudflare.com/ajax/libs/Vue.Draggable/2.20.0/vuedraggable.umd.min.js"></script> 3. 其他组件&#xff1a; sortablejs.js拖拽 非官网文档 npm install …

Java 集合框架3

一、集合框架分类 二、 关于Map接口的常用类 1.HashMap HashMap类是Map接口的子类&#xff0c;是处理无序键值对集合的 HashMap特征1.允许有null键和null值2.数据保存是无序的3.重复的键被算作一个数据 i.HashMap构造方法 //HashMap() 构造一个初始存储空间为16&#xff0c;负…

zemax混合式非序列模拟

基础设置&#xff1a; 3D视图效果&#xff1a; 接下来用非序列模式设计一个多焦透镜 平行光束经过多焦透镜时&#xff0c;会汇聚在不同焦距处 非序列模式的编辑器如图&#xff1a; 注意不要点击左侧的非序列模式&#xff0c;那个时纯粹的非序列&#xff0c;会清除序列模式的数…

Revit SDK 介绍:AutoStamp 自动水印 AutoUpdate 自动更新 CancelSave

前言 这三个例子都是通过注册事件来完成相应的工作&#xff0c;内容比较简单。 内容 事件参考博客&#xff1a;Revit API&#xff1a;Events 事件总览 AutoStamp 自动水印 使用到的事件&#xff1a; application.ControlledApplication.ViewPrinting application.Controll…

时序预测 | MATLAB实现EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM时间序列预测对比

时序预测 | MATLAB实现EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM时间序列预测对比 目录 时序预测 | MATLAB实现EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM时间序列预测对比预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 时序预测 | MATLAB实现EEMD-SSA-LSTM、E…

第一章辩证唯物论,考点七思维导图

逻辑框架 考点七思维导图&#xff1a;

【【萌新的STM32学习-27--USART异步通信配置步骤】】

萌新的STM32学习-27–USART异步通信配置步骤 USART/UART 异步通信配置步骤 1.配置串口工作参数 HAL_UART_Init() 我们会在此处调用MSP中的回调函数 2.串口底层初始化 用户定义HAL_UART_MspInit() 配置GPIO NVIC CLOCK 等 3.开启串口异步接收中断 HAL_UART_Receive_IT() 4.…

基于简单的信息变换实现自然语言模型

题目:基于简单的信息变换实现自然语言模型 摘要:在自然语言处理中,自然语言模型是至关重要的。本论文提出了一种基于简单的信息变换实现自然语言模型的方法。该方法将输入信息进行一系列的信息变换,如分割、属性、等效替换、增加删除等变换,与原始信息进行比较,得知信息是…

解决window安装docker报错问题

第一次打开Docker Desktop后提示错误 试了网上版本都没用&#xff0c;后面发现是电脑没有下载相关虚拟机&#xff1a; 先点击链接下载wsl2&#xff0c;下载后命令行执行&#xff1a;dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /…

Jenkins发送邮件(简洁版)

需求背景 Jenkins构建结束需要通知客户下载项目WAR包&#xff0c;太麻烦且构建时间久的话可能忘记通知客户&#xff0c;想要构建结束自动邮件通知客户。 实现方法 # 安装mailx command -v mailx &> /dev/null || sudo yum -y install mailx# 发送邮件 recipient"ch…

深入解析即时通讯App开发中的关键技术

即时通讯App开发在现代社交和通信领域中扮演着重要的角色。随着移动设备的普及和网络的高速发展&#xff0c;人们对即时通讯工具的需求不断增加。本篇文章将深入探讨即时通讯App开发中的关键技术&#xff0c;帮助读者了解该领域的最新动态和技术趋势。 基础架构和通信协议 现…

Fair|Fur —— Fur Workflow

Hair Utils工具架 Hair Utils工具架上的Add Fur工具&#xff0c;对任何groom是一个好的起点&#xff0c;会对所选的skin自动创建Guide Groom和Hair Generate对象&#xff1b;如是带动画的skin&#xff0c;还会创建Guide Deform对象&#xff1b; Hair Utils工具架上的Create Gui…

WindowsServer2019安装.NET3.5

WindowsServer2019安装.NET3.5报0x800f0950 解决方法&#xff1a;复制WindowsServer2019镜像到目的操作系统 右键“此电脑”&#xff0c;以管理员权限打开服务器管理界面。 点击“添加角色和功能”。 然后一直下一步&#xff0c;找到要添加的.NET3.5功能即可。 ​​​​​​​设…

.NET Framework 3.5安装教程

一、概述 使用VS编程时&#xff0c;碰到需要安装低版本.NET Framework框架的第三方库文件。 环境&#xff1a; 操作系统 Window10 软件版本VS2015 二、安装 1、在Win10搜索框输入“启动或关闭 Windows功能”&#xff0c;然后点击“启动或关闭 Windows功能”项&#xff0c;如下图…