› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
princenan
V2EX  ›  MySQL

Mysql 查询,字符串的前部分命中数字类型查询

  •  
  •   princenan · Jun 16, 2023 · 1752 views
    This topic created in 1209 days ago, the information mentioned may be changed or developed.

    pCMwtpD.jpg

    pCMwaXd.jpg

    有大佬在知道这是什么情况吗

    4 replies  •  2023-06-16 14:04:05 +08:00
    LeegoYih
        1
    LeegoYih  
       Jun 16, 2023   ❤️ 1
    https://stackoverflow.com/questions/51544716/mysql-where-clause-accepting-integer-with-strings-on-primary-key-field
    简单的说就是字段是 int 而参数是 str ,MySQL 会自作聪明取前面整数部分。
    xianlinYI
        2
    xianlinYI  
       Jun 16, 2023
    mysql 在你使用字符串类型的数据和数字类型的数据做比较时,会自动把所有数据转位数字类型的数据然后比较。分两种情况:
    第一种是你的列是数字类型,查询条件是字符串类型,这种情况转化的时候就丢失掉了字母部分,也就是你现在的情况;
    第二种情况是你的列是字符串类型,你的查询条件是数字类型,这种情况就会把你的列做一次函数操作转化成数字类型,和你的查询条件做比较,由此造成的问题就是你该列上的索引会失效;

    所以你在设计表和设计查询条件是需要考虑 mysql 的数据类型以防止索引失效
    princenan
        3
    princenan  
    OP
       Jun 16, 2023
    @LeegoYih 明白了
    princenan
        4
    princenan  
    OP
       Jun 16, 2023
    @xianlinYI 明白了,谢谢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2774 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 08:13 · PVG 16:13 · LAX 01:13 · JFK 04:13
    ♥ Do have faith in what you're doing.