MYSQL中 ENUM 类型的 查询坑点

CREATE TABLE `address` (
  `is_default` enum('0','1') NOT NULL DEFAULT '0' COMMENT '1默认收货地址',
) ENGINE=InnoDB AUTO_INCREMENT=8196 DEFAULT CHARSET=utf8 COMMENT='买家地址信息表';

 

查询条件是enum类型的字段时,如果是想比较emun值就要传字符串,enum类型每个枚举的值都会有个隐形的索引,如果比较的值是整型将会引用enum索引对应的值,enum的索引以1开始,enum可以类比成PHP这样的索引数组

[
    1 => '0', 枚举值为0
    2 => '1', 枚举值为1
]

以上数据表结构为查询实例:

where is_default = 1 //实际上在查询时会转换为where is_default = '0'
where is_default = 2 //实际上在查询时会转换为where is_default = '1'
where is_default = '0' //实际上在查询时会转换为where is_default = '0'
where is_default = '1' //实际上在查询时会转换为where is_default = '1'

 

听说enum字段插入值为整数时荟报错,有待查证。https://blog.csdn.net/u012643122/article/details/52643686

参考资料:https://www.cnblogs.com/skillCoding/archive/2012/03/14/2395404.html

 

你可能感兴趣的:(数据库)