SQL练习(2)(2020-04-06)

鉴于我写sql语句的能力有些差,在今后的一段时间内会时常做一些sql语句的练习。先给自己定一个小目标:先将网上能找到的sql练习都做一遍。

——————————————————————————————————————————————————————

这里主要是一些常用的函数操作

-- 数值函数
-- 向上取整 ceil()
select ceil(15.499) from dual;
-- 向下取整 floor()
select floor(15.999) from dual;
-- 四舍五入round()
select round(15.499) from dual;

-- 截断, trunc() 第一个参数为需要截断的数, 第二个参数为截断的位数
select trunc(45.926, 2) from dual;
select trunc(45.464555, 3) from dual;

-- 求余mod()
select mod(9, 4) from dual;
-- 字符函数 substr()起始索引不管写 0 还是 1 都是从第一个字符开始截取, 第二个参数为截取的个数
select substr('abcdefg', 1, 3) from dual;

-- 求字符串的长度 length()
select length('abcdefghijk123456789') from dual;

-- 去除字符串两边的空格 trim()
select trim('              1234567489                ') from dual;
-- 替换字符串replace
select replace('hello', 'l', 'A') from dual;

-- 日期函数
-- 查询今天的日期
select sysdate from dual;
-- 查询3个月后今天的日期
select add_months(sysdate, 3) from dual;
-- 查询3天后的日期
select sysdate + 3 from dual;

-- 转换函数
-- 字符转换为数值 to_number(str) 鸡肋
select 100 + '10' from dual; -- 这里已经是帮我们转换好的了
select to_number('100') from dual;

-- 数值转换为字符, 
select to_char(sal, '$9,999.99') from emp;
select to_char(sal, '9,999.99') from emp;
/*
       to_char(1210.73, '9999.9') 返回 '1210.7' 
       to_char(1210.73, '9,999.99') 返回 '1,210.73' 
       to_char(1210.73, '$9,999.00') 返回 
       '$1,210.73' to_char(21, '000099') 返回 '000021' 
       to_char(852,'xxxx') 返回' 354' 
*/

-- 日期转换字符 to_char()
select to_char(sysdate, 'yyyy-mm-dd hh:mi:ss') from dual;
select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') from dual;

-- 只想要年
select to_char(sysdate, 'yyyy') from dual;
-- 只想要日
select to_char(sysdate, 'd') from dual; -- d代表一个星期中的第几天
select to_char(sysdate, 'dd') from dual; -- dd 代表一个月中的第几天
select to_char(sysdate, 'ddd') from dual; -- ddd 代表一年中的第几天 

-- 字符串转为日期
select to_date('2020-04-10', 'yyyy-mm-dd') from dual;

/*
通用函数: 
nvl(参数 1,参数 2) 如果参数 1 = null 就返回参数 2 
nvl2(参数 1,参数 2,参数 3) 如果参数 1 = null ,就返回参数 3, 否则返回参数 2 
nullif(参数 1,参数 2) 如果参数 1 = 参数 2 那么就返回 null , 否则返回参数 1 
coalesce: 返回第一个不为 null 的值
*/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值