oracle_sql单行函数练习(含答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
oracle_sql单行函数练习(含答案)
整理 2012-12-3
Oracle单行函数的实例练习,基于Oracle自带数据库,用户名分别为hr(主要)和scott。
基本上都做出来了,但还有一道关于人民币转数字的还没有做出来,有知道的留言下哦,
其他地方有错误的请指正。
Sql代码
1./*1、将字符串'abc' 以10位长度输出,不足10位用#补足(分别从左
边和右边补足)
2.2、将字符串' abc ewr 3245 4 '去除两头
空格输出
3.3、将字符串'abc 234 abc abc def abc' 中'abc' 替换
为'###' 输出
4.4、将数字7433453.52638263 四舍五入后输出
5.5、将数字743583.345234 中十位数之后数字全部忽略输出
6.*/
7.
8.--1、将字符串'abc' 以10位长度输出,不足10位用#补足(分别从左
边和右边补足)
9.SELECT lpad('abc',10,'#') FROM dual;
10.SELECT rpad('abc',10,'#') FROM dual;
11.--2、将字符串' abc ewr 3245 4 '去除两
头空格输出
12.SELECT trim(' abc ewr 3245 4 ') FR
OM dual;
13.--3、将字符串'abc 234 abc abc def abc' 中'abc' 替换
为'###' 输出
14.SELECT replace('abc 234 abc abc def abc','abc','###') FR
OM dual;
15.--4、将数字7433453.52638263 四舍五入后输出
16.SELECT ROUND(7433453.52638263) FROM dual;
17.--5、将数字743583.345234 中十位数之后数字全部忽略输出
18.SELECT round(743583.345234,-1) from DUAL;
19.
20./*
21.6、查询hr方案中employees表,将所有员工工资上涨11.173% 后,
四舍五入到十位输出
22.7、将当前系统时间格式化为
'YEAR MONTH DY DAY YYYY-MM-DD HH24:MI:SS'输出
23.8、查询hr方案中employees表,将入职时间格式化为
'YYYY-MM-DD HH24:MI:SS' 显示
24.9、将当前时间加一年后格式化输出显示
25.10、两个时间相减后输出
26.*/
27.
28.--6、查询hr方案中employees表,将所有员工工资上涨11.173% 后,
四舍五入到十位输出
29.SELECT round(salary*(1+0.11173),-1)
30.FROM employees;
31.
32.--7、将当前系统时间格式化为
'YEAR MONTH DY DAY YYYY-MM-DD HH24:MI:SS'输出
33.SELECT to_char(sysdate,'YEAR MONTH DY DAY YYYY-MM-DD HH24
:MI:SS')
34.FROM dual;
35.--8、查询hr方案中employees表,将入职时间格式化为
'YYYY-MM-DD HH24:MI:SS' 显示
36.SELECT to_char(hire_date,'YYYY-MM-DD HH24:MI:SS')
37.FROM employees;
38.--9、将当前时间加一年后格式化输出显示
39.SELECT to_char(add_months(sysdate,12),'YYYY-MM-DD')
40.from dual;
41.
42.--10、两个时间相减后输出
43.SELECT to_date(2011,'YYYY')-sysdate
44.FROM dual;
45.
46./*
47.11、查询hr下employees表中入职时间满10年的员工
48.12、查询hr下employees表中2000年后入职的员工
49.13、查询hr下employees表中所有98年3月入职的员工
50.14、查询hr下employees表中所有在3月入职的人
51.15、查询当前时间距离'1998-8-2' 的月数
52.*/
53.
54.--11、查询hr下employees表中入职时间满10年的员工
55.SELECT first_name
56.FROM employees
57.where months_between(sysdate,hire_date) > 10*12;
58.
59.--12、查询hr下employees表中2000年后入职的员工
60.SELECT *
61.FROM employees
62.where to_char(hire_date,'YYYY') >= '2000' ;
63.
64.--13、查询hr下employees表中所有98年3月入职的员工
65.--这里要注意用的是to_char 来进行日期比较
66.SELECT *
67.FROM employees
68.WHERE to_char(hire_date,'YYYY-MM') = '1998-03';
69.
70.--14、查询hr下employees表中所有在3月入职的人
71.SELECT *
72.FROM employees
73.WHERE to_char(hire_date,'MM') ='03';
74.
75.--15、查询当前时间距离'1998-8-2' 的月数
76.SELECT MONTHS_BETWEEN(sysdate,to_date('1998-8-2','YYYY-MM-DD')
)
77.FROM dual;
78.
79./*
80.16、将当前时间减12个月然后输出
81.17、查询下一个星期一显示输出
82.18、查询一个月的最后一天显示输出
83.19、查询hr下employees表中入职时间在下半个月的员工
84.20、查询hr下employees表中上半年入职的员工
85.*/
86.--16、将当前时间减12个月然后输出
87.SELECT add_months(sysdate,-12)
88.FROM dual;
89.
90.--17、查询下一个星期一显示输出
91.SELECT next_day(sysdate,'星期一')
92.FROM dual;
93.--18、查询一个月的最后一天显示输出
94.SELECT last_day(sysdate)
95.FROM dual;
96.
97.--19、查询hr下employees表中入职时间在下半个月的员工
98.SELECT *
99.FROM employees