MySQL的隐式转换
隐式转换
若字符串是以数字开头,并且全部都是数字,则转换的数字结果是整个字符串;部分是数字,则转换的数字结果是截止到第一个不是数字的字符为止
若字符串不是以数字开头,则转换的数字结果是 0
varchar str = "123dafa" // 转换为数字是 123
SELECT '123dafa' + 1; // 124
varchar str = "aabb33" // 转换为数字是 0
SELECT 'aabb33' + 100; // 100
SELECT 1 + '1'; // 2
SELECT CONCAT(2, ' test'); // '2 test'
看一下官方的隐试转换说明:
- 两个参数至少有一个是 NULL 时,比较的结果也是 NULL,例外是使用 <=> 对两个 NULL 做比较时会返回 1,这两种情况都不需要做类型转换
- 两个参数都是字符串,会按照字符串来比较,不做类型转换
- 两个参数都是整数,按照整数来比较,不做类型转换
十六进制的值和非数字做比较时,会被当做二进制串 - 有一个参数是 TIMESTAMP 或 DATETIME,并且另外一个参数是常量,常量会被转换为 timestamp
- 有一个参数是 decimal 类型,如果另外一个参数是 decimal 或者整数,会将整数转换为 decimal 后进行比较,如果另外一个参数是浮点数,则会把 decimal 转换为浮点数进行比较
- 所有其他情况下,两个参数都会被转换为浮点数再进行比较
为什么触发隐式类型转换,查询数据时就需要全表扫描?
对于 InnoDB 的 B+树索引结构,相信大多数小伙伴都有一定的了解。
示例有下面一组数据:
1, 2, 3, 4, 6, 6, 7, 11, 13, 21, 23, 39, 42, 61, 71,
101, 201, 220, 303, 345, 411, 601, 620, 701, 1402, 3333

当作为字符串类型建立索引时,数据顺序和B+树索引结构如下:
1, 101, 11, 13, 1402, 2, 201, 21, 220, 23, 3, 303, 3333,
345, 39, 4, 411, 42, 6, 6, 601, 61, 620, 7, 701, 71

实际上,B+ 树索引的快速定位能力,来源于同一层兄弟节点的有序性。对索引字段做函数操作,可能会破坏索引值的有序性。
而当字符串和数字做比较时,会将字符串转换成数字。
总结
MySQL查询中,当字符串和数字做比较时,会触发隐式类型转换,转换规则是将字符串转换成数字。
- 当索引字段是字符串类型,输入参数是数值类型时,会将字段转换成数值类型再进行查找,也就是对索引字段做了函数操作,破坏了索引的有序性,因此无法使用索引。
- 当索引字段是数值类型,输参数是字符串类型时,会将输入参数转换成数值类型再进行查找,对等号后面的输入参数进行函数操作,并不影响索引字段的有序性,因此可以使用索引。
相关文章:
MySQL的隐式转换
隐式转换 若字符串是以数字开头,并且全部都是数字,则转换的数字结果是整个字符串;部分是数字,则转换的数字结果是截止到第一个不是数字的字符为止 若字符串不是以数字开头,则转换的数字结果是 0 varchar str "…...
LeetCode:23. 合并 K 个升序链表
23. 合并 K 个升序链表 1)题目2)过程3)代码1. 最开始2.初步优化 4)结果1. 最开始2. 初步优化 1)题目 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合…...
js:正则表达式常用方法总结test、exec、match、matchAll、replace、replaceAll、search
文章目录 正则使用testmatch/matchAll不加g加ggroup 的使用 matchAll不加g加g exec不加g加g searchreplace 正则使用 常用的几种方法有:test、exec、match、matchAll、replace、replaceAll、search test // 匹配返回true,不匹配false /e/.test("…...
分析车载蓝牙通话只有前喇叭声音,后面喇叭无声背后原因
车载蓝牙通话只有前喇叭声音,后面喇叭无声背后原因 大家有没有注意到车载蓝牙连接后通话的时候只有前喇叭的有声音,后面喇叭没声音呢?特别是后装的车载多媒体上基本都是这样,细思下为什么这样的原因, 采访后装车载技术…...
高性能ADC/DAC FMC子卡推出-FMC164
FMC164 子卡集成 4 通道 1Gsps 采样率,16 位 高性能ADC采样,板载4 通道1.25Gsps 16 位DA。板载时钟芯片 HMC7044,可以提供 JESD204B所需要的各种时钟。具有同步/触发功能,模拟信号采用 SSMC 射频连接器输入和输出。板载时钟芯片为…...
Agisoft Metashape 红外影像处理
系列文章目录 文章目录 系列文章目录前言一、加载红外影像二、对齐照片三、构建 DEM四、生成 DOM五、温度值可视化前言 Agisoft Metashape 专业版支持处理来自 AscTec(ARA 格式)、WIRIS(TIFF 格式)热成像仪和以 R-JPEG(FLIR 数据)格式保存数据的热成像数据。 在本文中,…...
Mybatis从入门到入土
一、什么是Mybatis 1)MyBatis 是一款优秀的持久层(DAO层)框架 2)MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程 3)MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将…...
修为 - 人生感悟
人不为己,天诛地灭。 说明一下,上面说的为己,指的是人的修为。 一个人,在成年之后,需要不断的对自己进行修为的提高。在经历了世事之后,对人生的感悟要不断地进行总结,提高自己的修为。 老祖宗给…...
UnityWebSocket | 双端通信支持Text/Binary
跳转官方仓库地址 有多个项目使用该库,平台有PC、WebGL。 一、说明 1)原理 WebSocket是H5提供的一种浏览器与服务器进行全双工通讯的网络技术,属于应用层协议。数据通常在两个站(点对点)之间进行传输,按照…...
lazada详情
{“api”: “”, “data”: {“module”: “{“seller”:{“chatResponsiveRate”:{“labelText”:“Chat Response”,“value”:“100%”},“chatUrl”:“https://pages.lazada.com.my/wow/i/my/im/chat?brandId30768”,“hideAllMetrics”:false,“imEnable”:true,“imUser…...
企业为什么要数字化转型?
数字化转型是使用数字技术从根本上改变企业运营方式并为客户创造价值的过程。企业进行数字化转型,常见因素包括: 提高效率:数字化转型可以简化流程并自动执行重复性任务,从而减少执行这些任务所需的时间和精力。可以节省成本并提高…...
Excel 设置只能输入指定的字符
目录 1. 创建你要用的表格 2. 确定你要限定输入的行/ 列 3. 创建另一个sheet,用来保存限制输入的配置信息 4. 选中【是否外包】列,并选择数据验证 5. 设置数据限制 6. 确认结果 7. 不想设置配置sheet怎么办? 在工作中,你们…...
Web开发介绍
Web开发介绍 1 什么是web开发 Web:全球广域网,也称为万维网(www World Wide Web),能够通过浏览器访问的网站。 所以Web开发说白了,就是开发网站的,例如下图所示的网站:淘宝,京东等等 那么我们…...
多语言APP的外包开发流程及注意事项
近些年国内越来越多的公司走向海外,有些互联网项目即可以为国内用户使用,也可以为国外用户使用,尤其是一些智力类小游戏,这些小游戏不需要特别的运营,只要在设计和玩法上把握好,那就可以推广到全球用户。今…...
CMAKE介绍和使用(Windows平台)
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。 Windows平台 cmake工具的下载 cmake工具下载官网: Download | CMake 下载压缩包后解压,解压后的bin文件路径加到电脑系统环境…...
宝塔面板webhook 使用教程
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 背景1、介绍一下Webhook2、使用步骤1.安装git2.安装WebHook3.添加WebHook4.配置git 钩子 (码云示例)5.私有项目还需要做以下操作 背景 最近…...
大模型时代入场级技能:提示词工程!中文教程来啦
写出优质的提示词,让 AI 生成惊艳的图文作品。——这就是如今年薪百万仍一人难求的提示词工程师们在解决的问题。大语言模型时代下,不断涌现出众多让人瞳孔地震的绘画、拍案叫绝的文案,它们的创作者并非传统定义的画家、作家,而是…...
template和component自定义组件之间的区别
在小程序中自定义组件 component 方式和组件模板 template 2种方式实现页面组件化。 一、component自定义组件 1.概念 自定义组件是指可以被多个页面使用的组件,可以在小程序中多次复用。在开发中可以将一个页面中的代码和样式抽象出来,然后创建一个自定…...
如何提高读取Excel的效率,NPOI多线程读取详解
如何提高读取Excel的效率 当Excel中的数据量大,达到几十万条,使用Excel文件可能会变得很慢. 以下是一些建议来提高读取Excel的效率: 1. 选择合适的Excel库 在读取Excel文件时, 选择合适的Excel库可以显著提高效率. 一些常用的Excel库包括: EPPlus: 用于读写Excel文件的开源…...
【算法】【算法杂谈】从1到n的自然数组中,1出现的次数如何计算?
目录 前言问题介绍解决方案代码编写java语言版本c语言版本c语言版本 思考感悟写在最后 前言 当前所有算法都使用测试用例运行过,但是不保证100%的测试用例,如果存在问题务必联系批评指正~ 在此感谢左大神让我对算法有了新的感悟认识! 问题介…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...
HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...
