oracle简单学习总结(三)——函数
一、数值型函数
函 数功 能实 例结 果abs求绝对值函数abs(?5)5sqrt求平方根函数sqrt(2)1.41421356power求幂函数power(2,3)8cos求余弦三角函数(用弧度)cos(3.14159)?1mod求除法余数mod(1600, 300)100ceil求大于等于某数的最小整数 ceil(2.35) 3floor求小于等于某数的最大整数floor(2.35)2round按指定精度对十进制数四舍五入round(45.923, 1)二、oracle中的dual表
2.1 理解
1、DUAL是 SYS用户的一个TABLE.
2、Dual是Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的Select语句块中,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。
3、DUAL就是个一行一列的表,该表和系统中的其他表一样,一样可以执行插入、更新、删除操作,还可以执行drop操作。但是不要去执行drop表的操作,否则会使系统不能用,数据库起不了,会报Database startup crashes with ORA-1092错误。
2.2 DUAL 能做什么
1、查找当天日期
SQL> select sysdate from dual;
2、查找当前日期的当月第一天
SQL> select trunc(sysdate,’MONTH’) from dual;
3、查找当前日期的当月最后一天
SQL> select trunc(last_day(sysdate)) from dual;
4、查看当前用户,可以在SQL Plus中执行下面语句
SQL> select user from dual;
5、获得当前系统时间
SQL> select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual;
6、获得主机名
SQL>select SYS_CONTEXT(‘USERENV’,'TERMINAL’) from dual;
7、获得当前locale
SQL>select SYS_CONTEXT(‘USERENV’,'language’) from dual;
8、获得一个随机数
SQL>select dbms_random.random from dual;
9、查看当前日期、时间
SQL> select sysdate from dual;
10、获得序列your_sequence的下一个值
SQL>select your_sequence.nextval from dual;
11、获得序列your_sequence的当前值
SQL>select your_sequence.currval from dual;
12、可以用做计算器
参考网址:http://yesican.blog.51cto.com/700694/269814
http://www.itfarmer.com.cn/plsql/1093.html
三、字符型函数
函数名称四、日期型函数
1、Oracle使用内部数字格式来保存时间和日期,包括世纪、年、月、日、小时、分、秒。缺省日期格式为DD-MON-YY,如“08-05月-03”代表2003年5月8日。16-2 月-03
(按周四舍五入)
trunc对日期按指定方式进行截断trunc(to_date('06-2 月-03'),'YEAR')(按周截断
五、日期转换格式字符
代 码代表的格式例 子AM、PM上午、下午08 AMD数字表示的星期(1~7)1,2,3,4,5,6,7DD数字表示月中的日期(1~31)1,2,3,…,31MM两位数的月份01,02,…,12Y、YY、YYY、YYYY年份的后几位3,03,003,2003RR解决Y2K 问题的年度转换 DY简写的星期名MON,TUE,FRI,…DAY全拼的星期名MONDAY,TUESDAY,…MON简写的月份名JAN,FEB,MAR,…MONTH全拼的月份名JANUARY,FEBRUARY,…HH、HH1212小时制的小时(1~12)1,2,3,…,12HH2424 小时制的小时(0~23)0,1,2,…,23MI分(0~59)0,1,2,…,59SS秒(0~59)0,1,2,…,59,./-;:原样显示的标点符号 'TEXT'引号中的文本原样显示TE
sql: SELECT TO_CHAR(sysdate,'YYYY-MM-DD HH24:MI:SS AM DY') FROM dual;
sql:SELECT TO_CHAR(sysdate,'YYYY" 年"MM" 月"DD" 日"')FROM dual;
六、转换函数
函 数 功 能实 例结 果To_char转换成字符串类型To_char(1234.5, '$9999.9')$1234.5To_date转换成日期类型To_date('1980-01-01', 'yyyy-mm-dd')01-1 月-80To_number 转换成数值类型To_number('1234.5')1234.5说明:Oracle可以自动根据具体情况进行如下的转换:
(1) 字符串到数值。(2) 字符串到日期。(3) 数值到字符串。(4)日期到字符串。
七、数值转换
代 码代表的格式例 子9代表一位数字,如果是正数,前面是空格,如果是负数,前面是-号99990代表一位数字,在相应的位置上如果没有数字则出现00000,逗号,用作组分隔符99,999.小数点,分隔整数和小数999.9$$货币符号$999.9L本地货币符号L999.99FM去掉前后的空格FM999.99EEEE科学计数法9.9EEEES负数符号?放在开头S999.9sql:SELECT TO_CHAR(123.45,'0000.00'), TO_CHAR(12345,'L9.9EEEE'), TO_CHAR(12345,'L9,9999') ,TO_CHAR(12345,'L9,9') FROM dual;
八、其他常用函数
说明:字符串的比较原则是,依次转换为ASCII码,先比较第一位,如果相同,则继续比较第二位,依此类推,直到出现大小关系
nvl例:
nvl(comm, 0):用0代替空的Comm值。nvl(job, '无'):用“无”代替空的职务。
decode例:
sql:SELECT name,age,decode(age, '26', '年龄26','12','年龄12','年龄不大于10') FROM userinfor;
说明:如果age字段的内容为26”则返回“年龄26”,如果是“12”则返回“年龄12”。如果不是“ 26” 、“ 12” 之一, 则返回“年龄不大于10”
userenv例:
函数userenv返回用户环境信息字符串,该函数只有一个字符串类型的参数,参数的内容为如下之一的字符串,可以不区分大小写: