mysql decimal转字符串_「7」分享些MySQL中算术运算符的灵活应用案例

算术运算符是SQL中最基本的运算符,MySQL自然不能缺少对其的支持。

31706298772f3c6d0655732d3ef92312.png

既然其名称中有“算术”二字,给人的第一感觉当然是支持数字型的运算。所以我们先从数字着手了解它。

【1】建表

我的习惯一直是以案例作为学习的切入点。建一个数据表是第一步:

CREATE TABLE `num_oper01` ( a` int(11) DEFAULT NULL, `b` float DEFAULT NULL, `c` decimal(18,2) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8
7fe74530b0c351d2fb98e4c64646a7f2.png

【2】数据准备

insert into num_oper01 values(3,3,3);insert into num_oper01 values(3,3.45,3.4);
442b17c11b95320757f6dd52e4c6127f.png

结论:从select的结果可以看到,int永远是以不带小数位的整数存在,float则根据实际情况调整,而decimal则永远按定义的小数位形式显示。

【3】数字的加减乘除

select a,b,c,a+1.2,b+1.2,c+1.2 from num_oper01;select a,b,c,a-1.2,b-1.2,c-1.2 from num_oper01;select a,b,c,a*1.2,b*1.2,c*1.2 from num_oper01;select a,b,c,a/1.2,b/1.2,c/1.2 from num_oper01;
01b6d4c76b85143ef5c5ce92fa664a2b.png

结论:

  • MySQL会自动进行数据类型切换;
  • 切换的顺序是:INT --> FLOAT --> DECIMAL
  • MySQL会根据计算结果自动增加小数位数。

再来单独看看取余的计算效果:

91effcd84bb55b357c9247422b3f8587.png

从执行效果可以看出:

  • INT与DECIMAL的取余还是INT与DECIMAL;
  • FLOAT取余就超出我们的理解;

结论:取余就是整数的一种概念,不要对小数有所谓取余的想法。

最后我们当然不能忘记验证被0除的结果。

874dcf5c77cd2f6e9b489ce7650b961b.png

还好MySQL没给我们惊喜,涉及到算术运算,除数不能为0这个定理没被打破,只是返回的是NULL而非报错中断程序执行。

【4】字符串中的数字

先给出自己测试出的结论吧:

在MySQL当中,字符串类型间进行加减乘除运算的时候,会截取字符串以数字开头的那一部分数字进行运算,如果字符串前面没有数字,那么就只能截取的数值为0,那么进行加减的时候结果都是0,进行乘除的时候结果都是NULL。

看案例慢慢去理解。

select '1a'+'1b','15e'-'4'b,'15e'/'4b','2r'*'3s','r'/'s','2019-12-08'-'2019-12-08';
9bbddcf119952371b0d123c4b72bd2d6.png

总结

  • 算术运算符有加减乘除及取余5种;
  • 算术运算符不仅可以应用在数字,还可以应用于从字符串中抽取的数字。

所以,学习不能把自己的思维固化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值