mysql中的函数编程_MySQL

12.2. 控制流程函数

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

在第一个方案的返回结果中, value=compare-value。而第二个方案的返回结果是第一种情况的真实结果。如果没有匹配的结果值,则返回结果为ELSE后的结果,如果没有ELSE部分,则返回值为NULL。

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

一个CASE表达式的默认返回值类型是任何返回值的相容集合类型,但具体情况视其所在语境而定。如果用在字符串语境中,则返回结果味字符串。如果用在数字语境中,则返回结果为十进制值、实值或整数值。

IF(expr1,expr2,expr3)

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

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,则IF()函数的结果类型 为非NULL表达式的结果类型。

expr1作为一个整数值进行计算,就是说,假如你正在验证浮点值或字符串值, 那么应该使用比较运算进行检验。

mysql> SELECT IF(0.1,1,0);

-> 0

mysql> SELECT IF(0.1<>0,1,0);

-> 1

在所示的第一个例子中,IF(0.1)的返回值为0,原因是0.1被转化为整数值,从而引起一个对IF(0)的检验。这或许不是你想要的情况。在第二个例子中,比较检验了原始浮点值,目的是为了了解是否其为非零值。比较结果使用整数。

IF() (这一点在其被储存到临时表时很重要)的默认返回值类型按照以下方式计算:

表达式

返回值

expr2或expr3返回值为一个字符串。

字符串

expr2或expr3返回值为一个浮点值。

浮点

expr2或 expr3 返回值为一个整数。

整数

假如expr2和expr3 都是字符串,且其中任何一个字符串区分大小写,则返回结果是区分大小写。

IFNULL(expr1,expr2)

假如expr1不为NULL,则IFNULL() 的返回值为 expr1; 否则其返回值为 expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。

mysql> SELECT IFNULL(1,0);

-> 1

mysql> SELECT IFNULL(NULL,10);

-> 10

mysql> SELECT IFNULL(1/0,10);

-> 10

mysql> SELECT IFNULL(1/0,'yes');

-> 'yes'

IFNULL(expr1,expr2)的默认结果值为两个表达式中更加“通用”的一个,顺序为STRING、REAL或INTEGER。假设一个基于表达式的表的情况,或MySQL必须在内存储器中储存一个临时表中IFNULL()的返回值:

CREATE TABLE tmp SELECT IFNULL(1,'test') AS test;

在这个例子中,测试列的类型为CHAR(4)。

NULLIF(expr1,expr2)

如果expr1= expr2 成立,那么返回值为NULL,否则返回值为 expr1。这和CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END相同。

mysql> SELECT NULLIF(1,1);

-> NULL

mysql> SELECT NULLIF(1,2);

-> 1

注意,如果参数不相等,则MySQL两次求得的值为expr1。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532895.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python画窗口_pyqt中图案如何画在子窗口上

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼基本思路是从QWidget派生出一个类重写paintEvent&#xff0c;在里面画图。UI部分代码是这样的class Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(1008, 693)self.widget QtWidgets…

twisted mysql_Twisted MySQL adbapi返回字典

有没有办法把adbapi查询的字典结果返回到MySQL&#xff1f;在[name: Bob, phone_number: 9123 4567]默认返回元组。在^{pr2}$对于简单的Python&MySQL&#xff0c;我们可以使用MySQLdb.cursors.dictcursors。但是如何与扭曲的adbapi一起使用呢UPD:我解决了&#xff0c;但我认…

win 10 java 安装_win10---Java安装及环境变量配置

一、Java安装给出的下载地址已经是1.8.0及以上的版本&#xff0c;只需要进去根据操作系统位数选择所对应的包即可&#xff0c;我的是Windows x64&#xff0c;所以我选择的是第二个。注意⚠️&#xff1a;下载jdk时&#xff0c;需要登录Oracle账户&#xff0c;如果没有&#xff…

java 生成bat_java实现生成windows可执行的批处理文件(.bat)

/*** 下载压缩包**paramid 商户id*paramrequest*paramresponse*returnvoid*authorchen.bing* Date 2019/11/4 17:35*/RequestMapping(value "downloadzip")public voiddownloadzip(String id, HttpServletRequest request, HttpServletResponse response) {if(String…

java 代码块的作用_4种Java代码块的作用讲解

4种Java代码块的作用讲解时间&#xff1a;2017-06-28 来源&#xff1a;华清远见JAVA学院今天华清Java学院小编要和大家分享的是Java代码块的作用&#xff0c;代码块是一种常见的代码形式&#xff0c;他用大括号“{&#xff5d;”将多行代码封装在一起&#xff0c;形成一个独…

java properties用法_java中Properties文件加载和使用方法

一.Properties简介Properties 类继承自HashTable&#xff0c;提供的方法很像Map的实现类HashMap。它在 Java 编程的早期就有了&#xff0c;并且几乎没有什么变化。J2SE 的 Tiger 版本增强了这个类&#xff0c;不仅可以用它在单独一行中指定用等号分隔的多个键-值对(其中键和值是…

java ip归属地查询_JAVA版IP地址查询调用示例

package cn.juhe;import net.sf.json.JSONObject;import org.springframework.web.client.RestTemplate;/*** ip地址查询Java版本demo*/public class IpDemo {//请求的接口地址public static final String REQUEST_URL "http://apis.juhe.cn/ip/ipNew?ip%s&key%s&q…

java 多个异常处理_Java 多个异常共享同一个异常处理器的方法

传统的异常处理我们先来看下&#xff0c;传统的异常处理方式&#xff1a;// not share exception handlerint[] intArray new int[3];try {for (int i 0; i < intArray.length; i) {intArray[i] i;System.out.println("intArray[" i "] " intArr…

java基础知识点_JAVA基础知识

1.注释&#xff0c;关键字&#xff0c;标识符1.注释(1)注释&#xff1a;解释说明程序的而文字。(2)注释的分类&#xff1a;单行注释 格式&#xff1a; //注释的文字多行注释 格式&#xff1a;/*注释的文字*/文档注释 格式&#xff1a;/**注释的文字*/(3)注释的作用&#xff1a;…

java栈的应用_Java堆栈应用程序

我有一个Java问题&#xff0c;涉及阅读一个文本文件&#xff0c;并检查它是否正确地平衡了花括号&#xff0c;方括号和括号 - {&#xff0c;}&#xff0c;[&#xff0c;]&#xff0c;(和) ”。读取文件没有问题&#xff0c;但现在我应该使用名为DelimPos的数据成员来保存行和字…

Linux下导出MySQL为SQL文件_在linux命令下导出导入.sql文件的方法

本文讲述了在linux命令下导出导入.sql文件的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;一、导出数据库用mysqldump命令(注意mysql的安装路径&#xff0c;即此命令的路径)&#xff1a;1、导出数据和表结构&#xff1a;mysqldump -u用户名 -p密码 数据库名 >…

python无人机路径规划算法_RRT算法在Python中的实现,快速,拓展,随机,树

"""《基于智能优化与RRT算法的无人机任务规划方法研究》博士论文《基于改进人工势场法的路径规划算法研究》硕士论文"""import matplotlib.pyplot as pltimport randomimport mathimport copyshow_animation Trueclass Node(object):"&quo…

uc3842改可调电源教程_明纬开关电源改可调详细教程

1.拆除启动电阻&#xff0c;电路板是R12R59R58R9 四个150K的电阻。2.拆除原494供电&#xff0c;去掉J22一根跳线&#xff0c;12V辅助电源正极接J22到494一端&#xff0c;负极接地。3.去掉J15更换为20K电阻&#xff0c;同时拆掉变压器下面的ZD1过压保护&#xff0c;输出可达到50…

duino例程 stm32_stm32duino

{"data":{"id":"8000-000000437045-0","name":"SEO专题页栏目分发组","type":"1","position":"8000-000000004003-0","status":1,"linkList":[{"id"…

java webservice ip_通过Web Service实现IP地址查询功能的示例

实例01 实现一个简单的Web服务访问本实例将实现IP地址查询接口服务&#xff0c;根据用户传入的IP地址返回IP所在的省、市、地区&#xff0c;实例中将会用到IP地址库用于查询信息&#xff0c;由于数据较多&#xff0c;所以读者可在光盘资源文件中直接附加数据库文件&#xff0c;…

java默认数组值_数组元素默认的初始值都是什么

在Java中&#xff0c;使用数组时&#xff0c;如果为数组分配了内存空间&#xff0c;但是没有为数组元素指定初始值&#xff0c;系统会自动为数组元素指定初始值。数组元素的初始值与数组的数据类型有关&#xff0c;对于不同数据类型的数组&#xff0c;其数组元素的初始值是不一…

java 异步通信处理_java异步通信

在Merlin之前,编写Socket程序是比较繁琐的工作.因为输入输出都必须同步.这样,对于多客户端客户/服务器模式,不得不使用多线程.即为每个连接的客户都分配一个线程来处理输入输出.由此而带来的问题是可想而知的.程序员不得不为了避免死锁,线程安全等问题,进行大量的编码和测试.很…

Java统计做题正确率_ResNet:训练期间的准确率为100%,但使用相同数据的预测准确率为33%...

我之前遇到过类似的问题&#xff0c;但解决方案非常简单 . 你需要增加时代数 . 这是1000个纪元后的输出[[ 9.99999881e-01 8.58182432e-08 9.54004670e-12][ 8.58779623e-20 9.99999881e-01 6.76907632e-08][ 2.12900631e-26 4.09224481e-34 1.00000000e00]]这是培训日志..Epoc…

java成员初始化顺序_Java成员初始化顺序

1. 初始化顺序在类的内部&#xff0c;变量定义的先后顺序决定了初始化的顺序。即使变量散布于方法定义之间&#xff0c;他们仍会在任何方法(包括构造器)被调用之前初始化。2. 静态成员初始化顺序1⃣️初始化类的静态成员或者静态块&#xff0c;静态初始化只在Class对象首次加载…

java五星好评点评器_亲,麻烦给个五星好评!—RatingBar

引言上一篇的CheckBox已经让大家越来越接近实战演练了&#xff0c;本章我们继续分享干货给大家&#xff0c;今天介绍一个实用的UI控件RatingBar(星级评分条)&#xff0c;对于使用过电商APP(某东&#xff0c;某宝等)的小伙伴们来说&#xff0c;应该不会陌生。在对商品进行评价时…