时间:2021-07-01 10:21:17 帮助过:19人阅读
上述所有函数的结果集和函数
1 SQL> @ d:\tempfile\oracle\input.txt; 2 SQL> --一、单列函数 3 SQL> --1.字符串函数 4 SQL> --将字符串大写,因为emp表里面有15条数据,所以 5 SQL> select upper(‘hello world‘) from emp; 6 7 UPPER(‘HELL 8 ----------- 9 HELLO WORLD 10 HELLO WORLD 11 HELLO WORLD 12 HELLO WORLD 13 HELLO WORLD 14 HELLO WORLD 15 HELLO WORLD 16 HELLO WORLD 17 HELLO WORLD 18 HELLO WORLD 19 HELLO WORLD 20 HELLO WORLD 21 HELLO WORLD 22 HELLO WORLD 23 HELLO WORLD 24 25 已选择15行。 26 27 已用时间: 00: 00: 00.00 28 SQL> select lower(ename) from emp where ename=‘SCOTT‘; 29 30 LOWER(ENAM 31 ---------- 32 scott 33 34 已用时间: 00: 00: 00.00 35 SQL> --dual表中只用一行一列,可以用来测试函数 36 SQL> --inintcap是让单词的首字母大写,后面的都是小写 37 SQL> select initcap(‘hello world‘) from dual; 38 39 INITCAP(‘HE 40 ----------- 41 Hello World 42 43 已用时间: 00: 00: 00.00 44 SQL> select initcap(‘HELLO WORLD‘) from dual; 45 46 INITCAP(‘HE 47 ----------- 48 Hello World 49 50 已用时间: 00: 00: 00.00 51 SQL> 52 SQL> select concat(‘hello‘, ‘ world‘) from dual; 53 54 CONCAT(‘HEL 55 ----------- 56 hello world 57 58 已用时间: 00: 00: 00.00 59 SQL> --concat函数的嵌套 60 SQL> select concat(concat(‘ylw‘,‘ love‘),‘ shagou‘) from dual; 61 62 CONCAT(CONCAT(‘ 63 --------------- 64 ylw love shagou 65 66 已用时间: 00: 00: 00.00 67 SQL> 68 SQL> --substr(char,[m,[n]]) 字符串的开始坐标为1,从m开始截取n长度, 69 SQL> --当m=0 不会显示数组越界,还是从1开始,如果m<0则是从字符串尾部开始截取 70 SQL> select substr(‘1234567‘,3,3) from dual; 71 72 SUB 73 --- 74 345 75 76 已用时间: 00: 00: 00.00 77 SQL> select substr(‘1234567890‘,-3,3) from dual; 78 79 SUB 80 --- 81 890 82 83 已用时间: 00: 00: 00.00 84 SQL> 85 SQL> select length(‘12345‘) from dual; 86 87 LENGTH(‘12345‘) 88 --------------- 89 5 90 91 已用时间: 00: 00: 00.00 92 SQL> 93 SQL> --instr(char1,char2,[n[,m]]);在char1中搜索char2,从char1中的n开始,重复m次,返回符合条件的首字符位置 94 SQL> select instr(‘123456789‘,‘4‘,3,1) from dual; 95 96 INSTR(‘123456789‘,‘4‘,3,1) 97 -------------------------- 98 4 99 100 已用时间: 00: 00: 00.00 101 SQL> 102 SQL> --补位函数lpad(char1,n,char2) rpad() 在char1的左边或者右边用char2补齐,直到长度为n 103 SQL> select ename, lpad(sal,10, ‘$$‘) sal from emp where deptno=‘10‘; 104 105 ENAME SAL 106 ---------- -------------------- 107 CLARK $$$$$$2450 108 KING $$$$$$5000 109 MILLER $$$$$$1300 110 111 已用时间: 00: 00: 00.00 112 SQL> 113 SQL> --截取字串 trim(c2 from c1) ltrim(c1,c2) rtrim(c1,c2) 把全部的c2从c1的两头截取出去,c2只能是一个字符, 114 SQL> select trim(‘a‘ from ‘aaabbbaaa‘) from dual; 115 116 TRI 117 --- 118 bbb 119 120 已用时间: 00: 00: 00.00 121 SQL> select ltrim(‘aaabbbaaa‘,‘a‘) from dual; 122 123 LTRIM( 124 ------ 125 bbbaaa 126 127 已用时间: 00: 00: 00.00 128 SQL> select rtrim(‘aaabbbaaa‘,‘a‘) from dual; 129 130 RTRIM( 131 ------ 132 aaabbb 133 134 已用时间: 00: 00: 00.00 135 SQL> 136 SQL> --replace(char,search_string[,replace_String]) 把search_string 替换为replace_string 137 SQL> select replace(‘ylw love shagou‘,‘shagou‘,‘zhunaodai‘) from dual; 138 139 REPLACE(‘YLWLOVESH 140 ------------------ 141 ylw love zhunaodai 142 143 已用时间: 00: 00: 00.00 144 SQL> 145 SQL> --ascii(char) chr(n) ascii码中的字符和数字转换 146 SQL> select ascii(‘A‘) from dual; 147 148 ASCII(‘A‘) 149 ---------- 150 65 151 152 已用时间: 00: 00: 00.00 153 SQL> --把ASCII列的长度设置为5 154 SQL> column ASCII format a5 155 SQL> select chr(65) ASCII from dual ; 156 157 ASCII 158 ----- 159 A 160 161 已用时间: 00: 00: 00.00 162 SQL> --2.数字函数 163 SQL> --round(n[,m]) m>0四舍五入到小数点后m位,m<0四舍五入到小数点前m位 164 SQL> select round(45.555,2) from dual; 165 166 ROUND(45.555,2) 167 --------------- 168 45.56 169 170 已用时间: 00: 00: 00.00 171 SQL> 172 SQL> --ceil(n) floor(n) 取整,ceil: n-(int)n>0?n+1:(int)n 173 SQL> select ceil(1.1) from dual; 174 175 CEIL(1.1) 176 ---------- 177 2 178 179 已用时间: 00: 00: 00.00 180 SQL> --abs(n) mod(n,m)==>取余 power(n,m) sqrt(n); 181 SQL> --3.日期函数 182 SQL> --sysdate 当前系统时间 183 SQL> select sysdate from dual; 184 185 SYSDATE 186 -------------- 187 14-5月 -17 188 189 已用时间: 00: 00: 00.00 190 SQL> --日期转换 191 SQL> select to_char(sysdate, ‘YYYY-MM-DD HH24:MI:SS‘) today from dual; 192 193 TODAY 194 ------------------- 195 2017-05-14 20:27:41 196 197 已用时间: 00: 00: 00.00 198 SQL> --修改日期 199 SQL> select add_months(SYSDATE,10) from dual; 200 201 ADD_MONTHS(SYS 202 -------------- 203 14-3月 -18 204 205 已用时间: 00: 00: 00.00 206 SQL> --查找下一个周几日期 207 SQL> --中文环境下使用‘星期三‘ 每个星期是从星期日开始 对应数字1, 所以星期三对应的是4 208 SQL> select next_day(SYSDATE,‘星期三‘) next_wednesday from dual; 209 210 NEXT_WEDNESDAY 211 -------------- 212 17-5月 -17 213 214 已用时间: 00: 00: 00.00 215 SQL> select next_day(SYSDATE,4) next_wednesday from dual; 216 217 NEXT_WEDNESDAY 218 -------------- 219 17-5月 -17 220 221 已用时间: 00: 00: 00.00 222 SQL> --当月的最后一天 223 SQL> select last_day(SYSDATE) from dual; 224 225 LAST_DAY(SYSDA 226 -------------- 227 31-5月 -17 228 229 已用时间: 00: 00: 00.00 230 SQL> --两个日期之间差了多少月 231 SQL> select ename, job, months_between(sysdate, hiredate) hiredate from emp where deptno =‘10