07-查询经过计算的值
8.2.4 查询经过计算的值
SELECT子句后不仅可以是表中的基本字段,也可以是表达式。
【范例8-3】
查询所有学生的学号、姓名,及出生年月。
MySQL> select sno,sname,year(now())-sage -> from student;
结果如下。
+-----+-------+------------------+ | sno | sname | year(now())-sage | +-----+-------+------------------+ | 1|刘敏 | 1996| | 2|周松 | 1994| | 3|张明 | 1995| | 4|孟欣 | 1994| +-----+-------+------------------+ 4 rows in set (0.00 sec)
查询结果中的year(now())为函数嵌套。now()函数获取系统日期,year() 函数可以获取参数的年份,year(now())的结果为系统日期的年份,year(now())-sage表达式计算的是学生的出生年份。
该查询中的表达式在查询结果中的列名为表达式本身,可以通过指定别名来改变查询结果的列标题。指定的方法是在待指定别名的字段、表达式后加空格,然后给出列别名。范例8-3中可以使用下面语句改变列的标题。
MySQL> select sno,sname,year(now())-sage sbir -> from student;
其中year(now())-sage表达式后的sbir为该表达式的别名,结果如下。
+-----+-------+------+ | sno | sname | sbir | +-----+-------+------+ | 1|刘敏 |1996| | 2|周松 |1994| | 3|张明 |1995| | 4|孟欣 |1994| +-----+-------+------+ 4 rows in set (0.04 sec)