背景与探索

最近在做一个简单的用户信息的查询及展示,其中在对用户性别判断的时候,出现了一个神奇的情况,首先数据库里有个表存储了性别字段 sex ,字段类型是:enum('0','1') DEFAULT NULL COMMENT '性别(0/女,1/男)'

整体表结构如下:

CREATE TABLE `user` (

`userid` int(10) unsigned NOT NULL COMMENT '登录账号ID',

`sex` enum('0','1') DEFAULT NULL COMMENT '性别(0/女,1/男)'

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='个人基础信息';

表中数据如下:

image.png

然后写了个简单的sql来判断男女,如下:

SELECT userid,if(sex=1,'男','女') as '性别' from user

image.png

发现显示的结果跟数据库存储的是完全相反的,但是的第一反应是不是判断反了,结果反复核实了几遍并没有判断反,然后看数据库存储的字段是枚举,心里想着说是不是类型问题导致的,结果将sex=1改成sex=‘1’,结果就对了,sql如下:

SELECT userid,if(sex='1','男','女') as '性别' from user

image.png

结论与总结

从上面的例子中我们知道,mysql对字符型的判断不能直接转换成数字,必须要跟对应的字符比较才能得到正确的结果,这个问题是平时很少注意到的问题,但是为什么当sex的值是'1'与1比较是false,sex值是'0'与1比较是true这个目前还没有搞清楚原理。

mysql 字段值不同枚举_【mysql】关于枚举值 '1','0'的神奇判断相关推荐

  1. mysql字段中有逗号隔开_在MySQL字段中使用逗号分隔符

    大多数开发者应该都遇到过在mysql字段中存储逗号分割字符串的经历,无论这些被分割的字段代表的是id还是tag,这个字段都应该具有如下几个共性.被分割的字段一定是有限而且数量较少的,我们不可能在一个字 ...

  2. mysql 5 7 教程视频_[MySQL] MySQL 5.7从入门到精通视频教程

    资源介绍 目录 ├─MySQL常用命令大全.pdf ├─视频教程 │xa0xa0├─第10讲 存储过程和函数 │xa0xa0│xa0xa0├─10.1xa0xa0创建存储过程和函数.avi │xa0x ...

  3. mysql数据库访问问题吗_#MySQL数据库无法远程访问的问题

    在 Ubuntu上装了mysql,因为项目的数据库是mysql,将项目放在tomcat里面webapp下面,一直启动不成功.本来一直以为是jdbc驱动问题,后来发现不是. 1.cd /etc/mysq ...

  4. mysql 单机双实列_{ mysql } MySQL单机多实例及主从复制

    没有过多的,直接上码 my.cnf [mysql_multi] mysqld = /usr/bin/mysqld_safe mysqladmin = /usr/bin/mysqladmin user ...

  5. c++ main函数调用 类中的枚举_为啥用枚举,枚举有哪些用法?

    Java基础:枚举的用法与原理 在学习过程中,我们也只是在定义常量的时候,会意识到枚举的存在,而定义常量其实可以在类中实现,这时就会感觉枚举有点鸡肋.但在实际项目开发的过程中,枚举因相当迷人的特性而受 ...

  6. java查询枚举_查找Java枚举的最佳实践

    查找Java枚举的最佳实践 我们有一个REST API,客户端可以在其中提供表示Java Enums中服务器上定义的值的参数. 因此,我们可以提供一个描述性错误,我们将此valueOf(..)方法添加 ...

  7. mysql字段名大写好处_数据库的表名字段名大小写问题

    今天发现它真的是一个问题. 拿我最喜欢的Oracle来说吧.一般情况下,建表不管大小写,建完表名.字段名总是大写的,这样你不得不在单词之间加下划线,从而增加了字段名长度,有时就超长了.在select的 ...

  8. mysql某一列 赋值_[MySQL]定时把某一列值赋值给另一列

    前言 在做项目的时候需要根据用户的积分做一个排名和排名趋势(上升.下降或持平),首先,从排名趋势上分析,我的想法是,今天的排名(ranking)和昨天排名(oldranking)进行对比,然后给出趋势 ...

  9. 定义mysql字段的编码模式_在 mysql 中 定义 数据库,表,列时,设定的各个的编码格式。...

    最近看了一下KIGG框架,发现在用EF + MYSQL数据库时,数据出现了乱码,用工具(Navicat )查看一下表category的结构发现 KIGG 数据库的默认情况是用latin1编码的(DEF ...

最新文章

  1. 使用Python,OpenCV制作图像Mask——截取ROIs及构建透明的叠加层
  2. 逆向工程、软件后门……原来美剧《硅谷》里藏着这么多知识点
  3. Android中实现滑动翻页—使用ViewFlipper
  4. linux多线程简介
  5. Vue-cli 自定义配置
  6. python改文件名_python 怎么改文件名
  7. Focus Stacking
  8. MFC API——》WM_NCHITTEST、OnNcHitTest (CPoint point) 点击鼠标时产生的消息
  9. 第三章 动态规划-基于模型的RL-强化学习理论学习与代码实现(强化学习导论第二版)
  10. 冒烟测试正确名称是踩雷测试,雷区测试
  11. C# 获取当前执行程序路径 获取路径 上上层目录 上层目录
  12. c++ 关于指针以及(amp;)使用的一些小问题
  13. 用Java实现md5加密
  14. 定时任务corn表达式设置
  15. 微信视频强制分享观看源码 微信流量裂变源码吸粉变现源码
  16. 计算机方面发什么类型的论文,计算机类本科毕业论文
  17. 3.1 电磁干扰EMI
  18. make config解惑
  19. XSS-lab通关记录
  20. 毕业论文管理系统(类图、ER图)、时序图

热门文章

  1. Cocos2d-x 坐标系及其坐标转换
  2. CentOS中获取文件的前四个字节的16进制值
  3. Responsive Web Design
  4. 【2012百度之星资格赛】J:百度的新大厦
  5. Apache Commons Pool试用小记
  6. .NET与COM互操作系列
  7. 《Linux内核分析》(二)——从一个简单Linux内核分析进程切换原理
  8. luajit官方性能优化指南和注解
  9. 08.为什么要使用lombok,它解决了什么问题?
  10. java中properties作用,Java中Properties的使用详解