oracle_sql单行函数练习(含答案)
www.fsimple整理 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     ') FROM dual;   
13.--3、将字符串'abc 234 abc abc def abc' 中'abc'  替换为 '###' 输出   
14.SELECT replace('abc 234 abc abc def abc','abc','###') FROM 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. 
oracle四舍五入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   
100.WHERE to_char(hire_date,'DD') > '15' ;   
101. 
102.--20、查询hr下employees表中上半年入职的员工   
103.SELECT *   
104.FROM employees   
105.WHERE to_char(hire_date,'MM') <= '06';   
106. 
107. 
108./*   
109.21、将数字825398374.3762 格式化成字符串后输出   
110.22、字符串变数字 'RMB825,398,374.38'   
111.23、查询hr下employees表将员工薪水以 '$999,999,999.00' 格式显示   
112.24、第一个参数是null返回第三个参数,否则返回第二个参数   
113.    SELECT  nvl2(234, 42, 142)   FROM dual   
114.25、两个参数相同返回null,否则返回第一个参数   
115.    SELECT nullif('abc','abc') FROM dual   
116.*/   
117.--21、将数字825398374.3762 格式化成字符串后输出   
118.SELECT to_char(825398374.3762)   
119.from dual;   
120. 
121.--22、字符串变数字 'RMB825,398,374.38'   
122.--没有写出来   
123. 
124.--23、查询hr下employees表将员工薪水以 '$999,999,999.00' 格式显示   
125.SELECT to_char(salary,'$999,999,999.00')   
126.FROM employees;   
127. 
128.--24、第一个参数是null返回第三个参数,否则返回第二个参数   
129.SELECT nvl2(commission_pct,commission_pct,0)   
130.FROM employees;   
131. 
132.--25、两个参数相同返回null,否则返回第一个参数   
133.SELECT nullif('aaa','aaa')   
134.FROM dual;   
135. 
136.SELECT nullif('aaa','bbb')   
137.FROM dual;   
138. 
139./*   
140.26、查询hr下employees表中frist_name,last_name 长度相同的员工记录   

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。