一、子查询的应用
1.分页查询
1)每页显示5条数据 ; 2)要找第几页 top 5*(3-1) --第3页
select top 5 * from car where code not in --跳过……后取前几条数据
(
select top 10 code from car --跳过多少条中间值
)
--查指定页的数据
2.取总页数
select ceiling(COUNT(*)/5.0) from car
PS:count(*)是整数类型,求总页数就需要返回值为小数类型,所以5需要写为5.0,求得小数类型后再取天花板数即是总页数.
二、函数
1.幂函数
SQRT --平方根
2.取近似值函数
1)CEILING
ceiling(3.2) -- 4
2)FLOOR
floor(3.2)-- 3
3)ROUND (索引中ROUND 函数T-SQL)
print round(345.987,0)-- 346.000
0是指保留小数点后几位.
print round(345.876,-1)-- 350.000
-1是指四舍五入到十位
print round(345.876,-2)-- 300.000
-2是指四舍五入到百位
3.符号函数
ABS -- 绝对值 可用于两列值相减不管列值是正数还是负数都不受影响.
4.其它函数
RAND -- 0至1之间的随机数(以时间做为种子),永远不等于1.
5.字符转换函数
1)LOWER -- 全部转换为小写.
2)UPPER -- 全部转换为大写.
3)STR -- 将数值转换为字符串
select '平均分是:'+str(AVG(DEGREE)) from score -- 平均分是:80
或用CAST……as 数据类型:
select '平均分是:'+CAST(AVG(degree) as varchar(30)) from score -- 平均分是:80.250000
6.去空格函数
1)LTRIM -- 压缩左边的空格
2)RTRIM -- 压缩右边的空格
select '平均分是:'+rtrim(ltrim(str(AVG(DEGREE)))) from score -- 既压缩左边又压缩右边的空格,两函数总是一里一外同时使用.
7.取子串函数
1)LEFT -- 自左边开始截取
2)RIGHT --自右边开始截取
3)SUBSTRING -- 任意位置截取n个
select left(title,10)+'xxx' + RIGHT(title,2) from news -- xxx可更换为想显示的字符或值.
select '....'+SUBSTRING(title,5,4)+'......' from news --在title列中自第5个字开始截取4个字.
8.字符串操作函数
1)CHARINDEX --子串的开始位置
2)REVERSE -- 反转
3)REPLACE -- 替换
select * from news where CHARINDEX('中国',title)>0 -- CHARINDEX(替换值,列名)