MySQL 条件, case when 和 if 方法

MySQL 条件, case when 和 if 方法,第1张

交换以下工资信息表中的m和f

这里主要练习一下两种条件方法,先是case when方法,

语法是CASE expressing WHEN condition THEN return

这里expressing 不是必须的,如果有,就是拿来和condition进行比较的,意即如果有expressing,默认将它和WHEN后面的条件进行=比较,如果真,返回THEN后面的结果。下面是有expressing和没有expressing的两种写法:

或者,我们可以用if方法

if的语法是IF(condition, value_if_true, value_if_false)

处理“我想查 IF中同时满足这两个条件的总数”

我的理解是:

SELECT COUNT(*) FROM tougao_record WHERE accept_company_id=100 AND channel_type=1 AND check_status=6

下面是if语句里面多个条件的使用。

IF语句的标准形式IF(expr1,expr2,expr3)

expr1可以是单个表达式也可以是多个表达式,且&&,或||,非!

上面的语句可以这样写

select COUNT(IF(channel_type=1 &&check_status=6),1,0) FROM tougao_record WHERE accept_company_id=100

但是就我的理解,mysql在统计count的时候,不管count括号里面的内容,只管是否为空,查询的结果不为空就计数。

我是处理下面的问题用到了,可以直接跑一下我给的sql语句。

SET @destval:='0.63'

SET @valforcomp='0.62'

SELECT 

IF(@destval REGEXP '^[\-\+.]?([0-9.]+)$' && @valforcomp REGEXP '^[\-\+.]?([0-9.]+)$',

IF(ABS(@destval-@valforcomp)<0.02,1,0),NULL) result

上面的REGEXP只是简单的用来判断是否是数字,通过这个我还发现了另一个问题,

SELECT ABS(@destval-@valforcomp)

这个查询出来不是等于0.01而是0.010000000000000009

不知道有没有帮到你。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8357384.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存