运算式(expressions)已经在查询叙述中使用过,例如算数运算与「WHERE」子句中的条件判断。 虽然目前只有讨论查询资料的部份,不过你在任何地方都有可能使用运算式来完成你的工作。 一个运算式中可以包含值(literal values)、运算子和函式,都会在这里讨论它们的细节与应用。
1 值与运算式
不论在执行查询或资料异动的时候,你都可能会使用各种不同种类的值(literal values)来完成你的工作:
不同种类的值会有不同的用法与规定,可以搭配使用的运算子和函式也不一样。 根据资料类型可以分为下列几种:
- 数值:可以用来执行算数运算的数值,包含整数与小数,分为 精确值与近似值两种
- 字串:使用单引号或双引号包围的文字
- 日期/时间:使用单引号或双引号包围的日期或时间
- 空值:使用「NULL」表示的值
- 布林值:「TRUE」或「1」表示「真」,「FALSE」或「0」表示「假」
1.1 数值
数值分为「精确值(exact-value)」与「近似值(approximate-value)」两种。 精确值在使用时不会因为进位而产生差异;使用近似值的时候,可能会因为进位而产生些微的差异。 精确值使用一个明确的数字来表示一个整数或小数数值:
- 整数:没有小数的数字,范围从-9223372036854775808到9223372036854775807
- 小数:包含小数的数字,整数范围与上面一样,小数位数最多可以有30个
一般来说,使用精确值在执行各种算数运算的时候,所得到的结果都不会有误差的问题,你只要特别注意范围就可以了。 例如下列这个比较奇怪的查询需求:
包含小数的数字,在整数部份的限制与整数相同,小数位数会有这样的限制:
近似值的的数字通常称为「科学表示法」,它使用下列的方式来表示一个数值:
这两种表示方式所代表的数值是这样计算的:
- XE+Y,X * 10Y,例如5E+3,代表的数字为5000
- XE-Y,X * 10-Y,例如5E-3,代表的数字为0.005
注:「XE+Y」格式中的「+」可以省略,例如「5E+3」与「5E3」是一样的。
使用近似值来表示一个数值的时候,你一定要牢记它是一个「近似值」,也就是它真正储存的数值可能不是你所看到的。 下列的情况是你比较容易理解的:
不过下列的状况就会有不一样的结果:
第一个运算值采用精确值的方式,所以它们一定会相等;第二个运算使用近似值的方式,所以它们不一定相等。
点击阅读全文
更多参考:
本文转自: MySQL入门 (三) : 运算式与函式
相关推荐
9-27 4 函的数定义分类及使用 9-27 5 函数的调用 递归及深入使用 9-27 6 一维?榧笆樵谀诖嬷械拇嬖谛问? 9-27 7 常用数组的属性及使用方法 9-28 1课程回顾 9-28 2 二维数组的定义使用 数组排序 9-28 3 顺序查找 ...
9-27 4 函的数定义分类及使用 9-27 5 函数的调用 递归及深入使用 9-27 6 一维?榧笆樵谀诖嬷械拇嬖谛问? 9-27 7 常用数组的属性及使用方法 9-28 1课程回顾 9-28 2 二维数组的定义使用 数组排序 9-28 3 顺序查找 ...
9-27 4 函的数定义分类及使用 9-27 5 函数的调用 递归及深入使用 9-27 6 一维?榧笆樵谀诖嬷械拇嬖谛问? 9-27 7 常用数组的属性及使用方法 9-28 1课程回顾 9-28 2 二维数组的定义使用 数组排序 9-28 3 顺序查找 ...
9-27 4 函的数定义分类及使用 9-27 5 函数的调用 递归及深入使用 9-27 6 一维?榧笆樵谀诖嬷械拇嬖谛问? 9-27 7 常用数组的属性及使用方法 9-28 1课程回顾 9-28 2 二维数组的定义使用 数组排序 9-28 3 顺序查找 ...
9-27 4 函的数定义分类及使用 9-27 5 函数的调用 递归及深入使用 9-27 6 一维?榧笆樵谀诖嬷械拇嬖谛问? 9-27 7 常用数组的属性及使用方法 9-28 1课程回顾 9-28 2 二维数组的定义使用 数组排序 9-28 3 顺序查找 ...