mysql的if,case使用笔记

在sql表达式中:

if表达式:

if(expr1,expr2,expr3)

  如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。

select *,if(sva=1,"男","女") as ssva from taname where sva != ""

   当sva为1时返回男,否则返回女。

ifnull表达式:

ifnull(expr1,expr2)

 当expr1<>null,返回expr1,否则返回expr2,可嵌套:

ifnull(ifnull(expr1,ifnull(...)),ifnull(...))

  case when表达式:

两种格式:

简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。

CASE 搜索函数计算一组布尔表达式以确定结果。

两种格式都支持可选的 ELSE 参数。

完整的简单case when

CASE input_expression
    WHEN when_expression THEN result_expression
        [ ...n ]
    [
        ELSE else_result_expression
    END

  

当input_expression = when_expression时,返回result_expression

select (case aix
    when ‘s400‘ then ‘hp‘
    when ‘a10‘ then ‘dell‘
    else ‘any‘
    end) machineName
from tablename

 input_expression一般为表字段,或者 其他有效的sql表达式(这句没太明白)。

 when_expression为与input_expression数据类型相同,或者可隐性转换。也就是说这里是不能是某种boolean表达式(字符串比较、表达式计算等),除非input_expression是bool型的。

完整的搜索case when

CASE
WHEN Boolean_expression THEN result_expression
        [ ...n ]
    [
        ELSE else_result_expression
    END

  当boolean_expression=true,返回result_expression.

select (case
    when aix = ‘s400‘ then ‘hp‘
    when aix = ‘a10‘ then ‘dell‘
    else ‘any‘
    end) machineName
from tablename

   可以理解为简单case when省略了case 后的true。两者的执行过程或不同,还有待研究。

  

  

 

 

时间: 2024-10-14 04:09:29

mysql的if,case使用笔记的相关文章

MySql基本语法(学习笔记)

MySQL语法大全_自己整理的学习笔记 select * from emp;  #注释 #--------------------------- #----命令行连接MySql--------- #启动mysql服务器 net start mysql #关闭 net stop mysql #进入 mysql -h 主机地址 -u 用户名 -p 用户密码 #退出 exit #--------------------------- #----MySql用户管理--------- #修改密码:首先在D

Mysql 中的CASE WHEN 用法

在SELECT语句查询中可以使用CASE WHEN对查询出来的结果,进行一个类似于if else的判断. 具体的用法 1. SELECT a.website_id, b.customer_name, a.website_enddate, c.member_name, d.websitetype_id,            CASE                 WHEN d.websitetype_id=1 THEN 400                WHEN d.websitetype

千万级记录的Discuz论坛导致MySQL CPU 100%的优化笔记

千万级记录的Discuz论坛导致MySQL CPU 100%的优化笔记 2007年3月,我写过一篇文章<解决一个 MySQL 服务器进程 CPU 占用 100%的技术笔记>( http://www.xiaohui.com/weekly/20070307.htm ),谈到自己在解决一个拥有 60 万条记录的 MySQL 数据库访问时,导致 MySQL CPU 占用 100% 的经过.在解决问题完成优化(optimize)之后,我发现 Discuz 论坛也存在这个问题,当时稍微提了一下: 发现此主

多IDC数据分布--MySQL多机房部署 - 学习笔记 - 51CTO技术博客

多IDC数据分布--MySQL多机房部署 - 学习笔记 - 51CTO技术博客 多IDC数据分布--MySQL多机房部署

MYSQL存储过程和函数学习笔记

学至Tarena金牌讲师何山,金色晨曦科技公司技术总监沙利穆课程笔记的综合. 1. 什么是存储过程和函数 将SQL语句放入一个集合里,然后直接调用存储过程和函数来执行已经定义好的SQL语句,通过存储过程和函数,可以避免开发人员重复编写相同的SQL语句. MYSQL存储过程和函数是保存在服务器中,在服务器中存储和执行,可以减少客户端和服务器端之间数据传输的消耗. 存储过程就是一组已经保存在数据库中的语句,并且可以随时地调用. 存储过程允许标准组件式编程,存储过程在被创建以后可以在程序中被多次调用而

mysql中的case when 与if else

大神说:在sql中,能用if else  就不用case  when 下面来看看,具体为什么,没有搞清楚,如果有大神知道的提供下资料: Mysql的if既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用: IF表达式 复制代码代码如下: IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3.IF() 的返回值为

mysql 5.7压缩包安装笔记

转载请注明出处http://www.cnblogs.com/havedream/p/5075263.html 重装系统之后准备安装mysql,看到官网上有mysql 5.7.10可以下载就点了,然后就开始了漫长的安装路程,总共折腾差不多一个多小时,最后终于安装成功了,这里把安装过程写下来,给自己做个笔记,也给后来人一个安装提示. 1.下载安装包 直接点击或者复制之后就可以下载了,不嫌麻烦或者想体验其他版本的也可以去官网下载,但是请注意,笔记只在5.7.10这个版本下运行成功,其他版本(仅供参考)

【SAE】MySQL数据库的简单使用笔记

因为SAE的PHP没有文件写权限,所以采用MySQL存储数据.下面是简单的使用笔记. 1.一些常量 用户名 : SAE_MYSQL_USER 密 码 : SAE_MYSQL_PASS 主库域名 : SAE_MYSQL_HOST_M 从库域名 : SAE_MYSQL_HOST_S 端 口 : SAE_MYSQL_PORT 数据库名 : SAE_MYSQL_DB 2.SAE提供的基于MySQL模块的SaeMysql类: <?php $mysql = new SaeMysql(); $sql = &quo

MySQL中Identifier Case Sensitivity

在MySQL当中,有可能遇到表名大小写敏感的问题.其实这个跟平台(操作系统)有关,也跟系统变量lower_case_table_names有关系.下面总结一下,有兴趣可以查看官方文档"Identifier Case Sensitivity" In MySQL, databases correspond to directories within the data directory. Each table within a database corresponds to at leas