码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • mysql varchar和bigint比较的坑


    问题描述:

    做两表关联时,有个比较,bigint和varchar 结果报错’Data truncation: Truncated incorrect DOUBLE value’,大多数问题出现是制表时不规范,类型没有统一,或者是子表查询出来的字段会默认是varchar;还有就是在查询时会出现精度负优化,搞得找问题是各种迷。在插入语句中出现,会有这个类型报错提示,查询时就没有,直接通过!

    大致就是:
    select 165933842860300000003 = '165933842860300000004'; 这个sql返回的结果就是1,认为条件成立,这个查询出来就会出现各种奇葩的问题```
    
    • 1

    如:
    在这里插入图片描述

    而select 165933842860300000003 = 165933842860300000004;返回的结果就是0,条件不成立
    
    • 1

    这个是mysql做的兼容性的操作

    MySQL在比较字符串和数值时,会将两者都转换成双精度浮点数进行比较,因为精度丢失,导致比较结果为true

    详细介绍:

    出现上面问题的原因是:在MySQL中当我们对不同类型的值进行比较的时候,为了使得这些数值可比较(也可以称为类型的兼容性),MySQL
    会做一些隐式转换(Implicit type conversion) //
    MySQL官方文档中有一篇介绍关于比较函数与运算符的文档。其中写到, Strings are automatically converted
    to numbers and numbers to strings as necessary. 意思是必要时字符串和数字之间会互相转换。
    // https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html

    解决方案:

    1、统一字段类型,用bigint就都用bigint,用varchar都用varchar。这样不仅规范,而且可以避免两表联查时索引失效;
    2、查询语句的条件中严格按照字段的类型写查询值。避免mysql进行隐式转换。也同时可以避免索引失效;
    3、统一查询比较时的类型,使用mysql提供的CAST()函数,或者各种字符串函数处理。

  • 相关阅读:
    网络安全(黑客)—2024自学
    【进阶C语言】数组笔试题解析
    《算法导论》15.3 动态规划原理(含有矩阵链问题的改良&&C++代码)
    [计算机网络基础]物理层详解
    error20221125--ssm项目用maven打包报错“找不到程序包 java.lang”或者“程序包javax.crypto不存在”,以及解决方案
    Java安装
    代码随想录Day43 | 1049.最后一块石头的重量II | 494. 目标和 | 474. 一和零
    高项_第十章项目沟通管理
    并发工具类——CountDownLatch、CyclicBarrier、Semaphore、Exchanger的介绍与使用
    Ceph — 简介
  • 原文地址:https://blog.csdn.net/qq_42448606/article/details/126578663
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号