单行函数的使用
日期类型的运算
对日期加减一个数字,返回值为一个日期
两个日期相减表示两个日期相差多少条
项目案例:
昨天,今天,明天
项目案例
十分钟之后
项目案例
每台unix服务器上的os账号开通了多长时间(以天为单位)
项目案例
按照开通天数的长短显示业务账号的信息
日期函数
months_between 两个日期之间相差多少个月
add_months 一个日期加减一个月
next_day 根据参数,出现下一个的日期
last_day 同一个月的最后一天
日期函数 : 例子
moths_between('01-SEP-95','11-JAN-94');
19.774194
add_months('11-JAN-94',6)
11-JUL-94
next_day('01-SEP-95','FRIDAY')
08-SEP-95
last_day('01-SEP-95')
30-SEP-95
项目案例:
上个月的今天,今天,下个月的今天
项目案例:
当前月的最后一天
SQL语句中的分支
分支表达式 case when
分支函数 decode
CASE表达式
寻找when的优先级:从上到下
再多的when,也只有一个出口,即其中有一个出口,即其中有一个满足了expr就马上退出case
else_expr和return_expr的数据类型必须相同。
case when condition then return_expr
when condition then return_expr
...
else else_expr
end
项目案例
当月包在线时长为20小时,单位费用涨5分,为40小时涨3分,其他不变(用CASE WHEN实现)
项目案例
50小时的费用
项目案例
月包在线时长在20到40小时之间,单位费用涨5分,月包在线时长大于40小时,单位费用涨3分。
项目案例
月包在线时长在40到100小时之间,月固定费用涨5角,月包在线时长大于100小时,月固定费用涨3角,其余不变。
DECODE 函数
DECODE(value,if1,then1,if2,then2,if3,then3,...,else), 表示如果value等于if1时,DECODE函数的结果为then1,...,如果不等于任何一个if值,则返回else .
select decode(colname1,condition1,value1,condtion2,value2,... valuelse);
项目案例
当月包在线时长为20小时,单位费用涨5分,为40小时涨3分,其他不变(用DECODE实现)
字符函数 (附加)
lower 小写函数
upper 大写函数
initcap 首字符大写函数
concat 拼接函数 (也可以用||代替)
substr 求子串函数
length 字符串的长度
lpad 右对齐函数,位数不够的,左边补指定字符
rpad 左对齐函数,位数不够的,右边补指定字符