zoukankan      html  css  js  c++  java
  • mysql中的几种判断语句

    在使用mysql过程中,经常会有根据某个字段的不同值显示语义化的名称的需求,例如一张用户表,有个sex字段存放的是用户性别,一般不会直接存男,女,未知这种字符串,而是存的0,1,2这种整型,整型的好处是查询效率高于字符串,查询出结果要显示成男,女这种,通常做法是查询出结果,在结果里if判断再赋值成字符串。其实mysql提供了类似判断的语法可以直接查出语义化的结果。

    创建测试数据

    创建一张用户表user,有username(用户名),sex(性别 3-未知 1-男 2-女)两个字段。

    CREATE TABLE IF NOT EXISTS `user`(
       `id` INT UNSIGNED AUTO_INCREMENT,
       `username` VARCHAR(100) NOT NULL,
       `sex` INT UNSIGNED,
       PRIMARY KEY ( `id` )
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

    插入测试数据:

    insert into user (username,sex) values('lilei',1);
    insert into user (username,sex) values('hanmeimei',2);
    insert into user (username,sex) values('zhansan',3);
    

    测试数据:

    方法一.CASE函数

    case函数语法:

    CASE condition
    WHEN value1 THEN returnvalue1
    WHEN value2 THEN returnvalue2
    WHEN value3 THEN returnvalue3
    ……
    ELSE defaultvalue
    END
    

    举例:

    SELECT username,(CASE sex  WHEN 1 THEN '男'  WHEN 2 THEN  '女'  ELSE '未知' END) as sex FROM user;
    

    查询结果如图:

    方法二.IF()函数

    CASE函数可以实现非常复杂的逻辑判断,实现满足条件就A,否则就B这样简单的判断逻辑的话,CASE函数就显得臃肿。MYSQL提供了IF()函数用于简化这种逻辑判断,其语法格式如下:IF(condition,A,B)
    如果condition条件为真,就返回A,否则返回B。所以如果有多个条件,就无法使用IF函数。IF()返回一个数字或字符串。

    select username,if(sex=1,'男','女') as sex from user;
    

    查询结果如图:

    可以看到,username为zhangsan的显示性别为女,因为我们条件是sex=1为男,其它都会女。所以IF函数用于只有两种情况的判断。mysql还有一个IFNULL(value1,value2)函数,这个函数一般用来替换NULL值的,我们知道NULL值是不能参与数值运算的。

    方法三.字符串操作ELT()

    语法:
    ELT(N,str1,str2,str3,...)
    如果 N = 1,返回 str1,如果N = 2,返回 str2,等等。如果 N 小于 1 或大于参数的数量,返回 NULL。

    SELECT username,ELT(sex,'男','女','未知') as sex FROM user
    

    查询结果如图:

    烦请各位看官觉得有用就给个推荐吧!

  • 相关阅读:
    temp table && check temp table
    AGP Aperture Size && UMA Frame Buffer Size
    ASP中應用BeginTrans的例子
    .NET中加密和解密的实现方法
    c#中Split等分割字符串的几种方法(转)
    AJAX网络开发技术
    MS SQL操作類
    Webconfig中使用appSettings设置连接字符串(转)
    男性10大死因与饮食有关 12食物预防猝死
    C#(IsNumeric) 字符串转换为数字的4种方法(转)
  • 原文地址:https://www.cnblogs.com/yqzc/p/12491790.html
Copyright © 2011-2022 走看看