分享一些工作中常用实战经验,希望对大家有帮助,如有不足,请指出,我会及时补充在文章中,一起进步与成长。
1、null结果排最后;
SELECT sort FROM t_grab_advert_sogou
ORDER BY ISNULL(sort),sort ASC
2、count()函数中使用if表达式来实现,当条件满足是表达式的值为非空,条件不满足时表达式值为NULL;
mysql> select count(if(num > 200, 1, null)) from a;
±------------------------------+
| count(if(num > 200, 1, null)) |
±------------------------------+
| 2 |
±------------------------------+
1 row in set (0.05 sec)
————————————————
3、使用case when语句时,如果放在查询的最后,则会sql报错,后面放一个count(*)则能解决问题。
4、时间转字符串
SELECT DATE_FORMAT(MAX(TJSJ), ‘%Y-%m-%d %H:%i:%s’) as JBSJ FROM v_shi_hcstjb
5、字符串转时间
STR_TO_DATE(字符串,日志格式)
SELECT STR_TO_DATE(‘2019-01-20 16:01:45’, ‘%Y-%m-%d %H:%i:%s’);
6、计算保留两位小数
CONVERT(COUNT(if(字段 = “已回复”, 1, null))/COUNT(字段),DECIMAL(15, 2)) as VAL
7、字符串转数字排序
ORDER BY (字段+0)
8、字符串截取
substring(字段,0,2)
9、对于字段值为null的判断
IFNULL(k2.VAL,0)
对于统计函数,如果无统计值默认是null,不做判断否则前端无返回字段。
注意:判断要放在最外层,内层的话,容易被外层值覆盖
10、CASE…WHEN语法
CASE WHEN XQZL = ‘1’ THEN ‘生猪’ WHEN XQZL = ‘2’ THEN ‘奶牛’ end X