MySQL有4个函数是用来进行条件操作的,这些函数可以实现SQL的条件逻辑,允许开发者将一些应用程序业务逻辑转换到数据库后台。
MySQL控制流函数:
CASE WHEN[test1] THEN [result1]...ELSE [default] END如果testN是真,则返回resultN,否则返回default
CASE [test] WHEN[val1] THEN [result]...ELSE [default]END  如果test和valN相等,则返回resultN,否则返回default
IF(test,t,f)   如果test是真,返回t;否则返回f
IFNULL(arg1,arg2) 如果arg1不是空,返回arg1,否则返回arg2
NULLIF(arg1,arg2) 如果arg1=arg2返回NULL;否则返回arg1
 

IFNULL(expr1,expr2)
如果 expr1 为非 NULL 的,IFNULL() 返回 expr1,否则返回 expr2。IFNULL() 返回一个数字或字符串值
mysql> SELECT IFNULL(1,0);
-> 1
mysql> SELECT IFNULL(NULL,10);
-> 10
如果 expr1 = expr2 为真,返回 NULL,否则返回 expr1。 它等同于 CASE WHEN x = y THEN NULL ELSE x END:

mysql> SELECT NULLIF(1,1);
-> NULL
mysql> SELECT NULLIF(1,2);
-> 1
--------------------------------------------------------------------------------
NULLIF(expr1,expr2)

如果 expr1 = expr2 为真,返回 NULL,否则返回 expr1。 它等同于 CASE WHEN x = y THEN NULL ELSE x END:

mysql> SELECT NULLIF(1,1);
-> NULL
mysql> SELECT NULLIF(1,2);
-> 1
--------------------------------------------------------------------------------
IF(expr1,expr2,expr3)
如果expr1为真,那么将返回expr2的值,否则返回expr3的值
mysql> SELECT IF(1>2,2,3);
-> 3
mysql> SELECT IF(1<2,'yes','no');
-> 'yes'
mysql> SELECT IF(STRCMP('test','test1'),'no','yes');
-> 'no'
如果expr2和expr3明确的指为null,那么将返回非NULL的类型..
--------------------------------------------------------------------------------
CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END

mysql> SELECT CASE 1 WHEN 1 THEN "one"
WHEN 2 THEN "two" ELSE "more" END;
-> "one"
mysql> SELECT CASE WHEN 1>0 THEN "true" ELSE "false" END;
-> "true"
mysql> SELECT CASE BINARY "B" WHEN "a" THEN 1 WHEN "b" THEN 2 END;
-> NULL

最新文章

  1. 深入学习jQuery节点操作
  2. PHP 根据key 给二维数组分组
  3. JQuery(选择器、事件、DOM操作)
  4. Java Hour 10
  5. hadoop-2.7.3 在windows环境下安装(无需Cygwin)
  6. 如何用JS获取ASP.net中的textbox的值 js获不到text值
  7. Android little error records
  8. phpStorm 快捷键收集以及配色方案
  9. PHP 开启报错机制
  10. MyEclipse使用问题及解决方法
  11. CSS的W3C标准的盒子模型和低版本IE浏览器的盒子模型
  12. sql语法复习:增删查改,各种数据库对象创建和函数使用
  13. Mysql MHA(GTID)配置(实操)
  14. Linux 下的两个特殊的文件 -- /dev/null 和 /dev/zero 简介及对比
  15. springMVC--XML解析
  16. [蓝桥杯]PREV-19.历届试题_九宫重排
  17. D - Windows Message Queue
  18. 学习windows编程 day4 之 盯裆猫
  19. vue2.0之echarts使用
  20. Visual Studio 2012 &amp; MyEclipse2015 快捷键对比

热门文章

  1. CentOS 6.x 无法格式化大于16TB的ext4分区处理
  2. Dubbo源码分析:ThreadPool
  3. python - django 执行数据库迁移后数据库并未更新 和 InternalError: (1054, u&quot;Unknown column &#39;xxx&#39; in &#39;field list&#39;&quot;)问题
  4. C# 监控网速
  5. 查看.NET应用程序中的异常(上)
  6. WinDbg常用命令系列---线程栈中局部上下文切换.frame
  7. C# DataTable转换为Html
  8. 计蒜客 39270.Angel&#39;s Journey-简单的计算几何 ((The 2019 ACM-ICPC China Shannxi Provincial Programming Contest C.) 2019ICPC西安邀请赛现场赛重现赛
  9. hadoop jps不显示信息
  10. OpenFOAM——同心环中的自然对流