连接符。数值运算和函数
2010-12-31 10:39
316 查看
1、基本用表:
bookitem表
course表:
2、连接符(+)
eg:
结果:
PS:给表起别名和给列取别名不多
eg:给表取别名
三点注意事项:
连接运算符只能用于连接两种数据类型相同或者相似的列,如果数据类型不同时,需要用cast进行数据类型转换。例如下面的代码:select tname + sal,age from teacher 运行时会报错,这是因为tname是varcher类型,而age是int类型,不能进行直接连接。正确的写法是:select tname +cast(sal as varchar(5)),age from teacher
使用连接运算符时候,要注意,如果两列或者多列进行连接时候,只要有一列值为null,则连接的结果为null。例如:
结果:
由记过可知,sal为null的行连接的结果为null,tname的信息也没有了。这一点要注意。
可以给表和列取别名,但是表的别名可以用于查询语句的任何子句,而列的别名只可以order by子句, 用于其他子句要出错。这和select语句的执行顺序相关。select 语句的执行顺序参见下图。
由此图可知只有order by子句在select子句之后,所以如果在select子句中给列取别名的话只有order by 子句知道,其他子句不知道列的别名的存在,因此在别的子句中使用列的别名会出错。而给表取别名是在from 子句,from子句在所有其他子句之前执行,因此可以被任何其他子句使用。例如:
执行这条查询会报错。
3、数值运算
eg1:从表bookitem中查询8折优惠后单价仍然高于30元的书目名称,数量及优惠后的单价
eg2:case的用法
从course表中查询所有课程的课程名,学时信息,并要求根据学时信息计算出每门课程的学分。其中学时高于40学分为5个学分,30~40之间为4个学分,20~30之间为3个学分,少于20学分为2个学分
case的用法实际上有点类似编程中的 IF...ELSE IF...ELSE用法
执行结果:
eg3:cast的用法,参见前面的例子
4、函数(略)
bookitem表
course表:
2、连接符(+)
eg:
--使用连接符并给列取别名 select tname +'('+dname+')' as info,age from teacher order by age
结果:
PS:给表起别名和给列取别名不多
eg:给表取别名
--给表取别名 select column from table as table_alias
三点注意事项:
连接运算符只能用于连接两种数据类型相同或者相似的列,如果数据类型不同时,需要用cast进行数据类型转换。例如下面的代码:select tname + sal,age from teacher 运行时会报错,这是因为tname是varcher类型,而age是int类型,不能进行直接连接。正确的写法是:select tname +cast(sal as varchar(5)),age from teacher
使用连接运算符时候,要注意,如果两列或者多列进行连接时候,只要有一列值为null,则连接的结果为null。例如:
select tname+cast(sal as varchar(5)),age from teacher
结果:
由记过可知,sal为null的行连接的结果为null,tname的信息也没有了。这一点要注意。
可以给表和列取别名,但是表的别名可以用于查询语句的任何子句,而列的别名只可以order by子句, 用于其他子句要出错。这和select语句的执行顺序相关。select 语句的执行顺序参见下图。
由此图可知只有order by子句在select子句之后,所以如果在select子句中给列取别名的话只有order by 子句知道,其他子句不知道列的别名的存在,因此在别的子句中使用列的别名会出错。而给表取别名是在from 子句,from子句在所有其他子句之前执行,因此可以被任何其他子句使用。例如:
select tname +'('+dname+')' as info,age from teacher where info like'%计算机%'
执行这条查询会报错。
3、数值运算
eg1:从表bookitem中查询8折优惠后单价仍然高于30元的书目名称,数量及优惠后的单价
--使用*号,注意在where子句中没有使用列的别名,在order by子句中使用了列的别名 select bookname,quantity,book_price*0.8 as off_price from bookitem where book_price*0.8 >30 order by off_price
eg2:case的用法
从course表中查询所有课程的课程名,学时信息,并要求根据学时信息计算出每门课程的学分。其中学时高于40学分为5个学分,30~40之间为4个学分,20~30之间为3个学分,少于20学分为2个学分
select cname,ctime,credit= case when ctime>=40 then 5 when ctime>=30 then 4 when ctime>=20 then 3 else 2 end from course order by credit
case的用法实际上有点类似编程中的 IF...ELSE IF...ELSE用法
执行结果:
eg3:cast的用法,参见前面的例子
4、函数(略)
相关文章推荐
- 连接符,数值运算与函数
- SQL学习之连接符,数值运算,函数
- 精通数据库SQL——连接符、数值运算与函数
- Mathematica 基本数值运算与符号运算函数
- javascript数值四则运算精度修正函数
- Hive常用运算(关系运算)、逻辑运算与数学运算、数值运算、日期函数、条件函数、字符串函数
- 内建函数--类型转换和数值运算函数
- javascript两个数值简单运算精度修正函数
- python内建数值运算函数
- SQL查询的艺术学习笔记--连接符数值运算函数
- 数值运算及算术运算函数
- Python基础学习数值运算之内建函数
- NumPy常用【数值计算】函数总结(2):ufunc运算、矩阵运算
- ABAP开发基础知识:8)数值运算及算术运算函数
- javascript数值四则运算精度修正函数
- Hadoop函数--数学函数 & 数学运算
- less 嵌套规则、运算、函数、命名空间
- krpano 教程 - action脚本运算函数
- 《剑指offer》-求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号
- Oracle 函数大全(字符串函数,数学函数,日期函数,逻辑运算函数,其他函数)