tttttttt
V2EX  ›  问与答

mysql 数据更新导致全部数据更新相关

  •  
  •   tttttttt · Apr 20, 2018 · 2422 views
    This topic created in 3130 days ago, the information mentioned may be changed or developed.

    有一张表 test,大致字段为下

    id int(10)
    name varchar(255)
    email varchar(255)
    

    update test set email = '[email protected]' where name=0; update test set email = '[email protected]' where name=false;

    我们的 name 字段在数据库为字符串,但当我们 sql 中让 name 字段等于一个 int 0 或 boole false 时, 都会导致把所有数据都更新,请教下是因为什么?

    5 replies  •  2018-04-20 22:49:06 +08:00
    tttttttt
    tttttttt
    OP
    Apr 20, 2018
    1
    有大佬知道为什么吗?
    justfindu
    justfindu
    Apr 20, 2018
    2
    看起来像是自动转类型并且计算了.
    naver1
    naver1
    Apr 20, 2018
    3
    数据库字段定义的是什么类型就是什么类型,
    "当我们 sql 中让 name 字段等于一个 int 0 或 boole false 时",存进去的也是 varchar 类型。
    你用"where name=0"或者"where name=false"时,类型跟字段不符,mysql 自动把字段里的值转为 0 或 false 的类型。
    任何字符串在 mysql 中转换为 int 后都等于 0 即 false。
    night98
    night98
    Apr 20, 2018 via Android
    4
    在插入前不强转的吗?
    ihuotui
    ihuotui
    Apr 20, 2018 via iPhone
    5
    隐式转换
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1085 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 18:34 · PVG 02:34 · LAX 10:34 · JFK 13:34
    ♥ Do have faith in what you're doing.