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 · 1637 views
    This topic created in 1145 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   ·   Solana   ·   4963 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 01:09 · PVG 09:09 · LAX 18:09 · JFK 21:09
    ♥ Do have faith in what you're doing.