Oracle基础(6)函数

数值函数

四舍五入函数:ROUND(n,[,m])       n表示要进行四舍五入的值

                        省略m: 0

                        m>0:小数点后m位

                        m<0:小数点前m位

特殊的表:DUAL表 作用是我们在oracle当中不能直接来使用我们的函数,也就是不能在我们SELECT里面直接使用我们的函数 他要求在我们SELECT语句后面也就是FROM子句里面必须要包含目标表。他是由一行一列来组成的

SELECT round(23.4),round(23.45,1),round(23.45,-1)

在sqlserver就直接可以看到函数执行效果了

在ORACLE不行,必须设置目标表,必须加上dual

SELECT round(23.4),round(23.45,1),round(23.45,-1) FROM dual;


上图是结果

取整函数:CEIL(n)取整取得是最大值

               FLOOR(n)取整取得是最小值

SELECT ceil(23.45),floor(23.45) FROM dual;


常用计算函数

    ABS(n)绝对值

    MOD(m,n)取余数

    第一个参数代表被除数,第二个参数表示除数

    如果任意一个值是空值null值那他就输出null值了

    POWER(m,n)返回的m的n次幂

    SQRT(n)平方根

    三角函数 SIN(n)  ASIN(n)

                   COS(n)  ACOS(n)    

                   TAN(n)   ATAN(n)

    n是弧度


字符函数

    大小写转换函数UPPER(char)

    LOWER(char)    

    INITCAP(char) 首字母大写

SELECT upper('abde'),lower('ADe'),initcap('asd') FROM dual;

比如说     注册用户名不区分大小写 我们可以再注册的时候把名字存到数据库里, 不管是大写小写,存里面

                取出值再同意转换,转换成大写或者是小写,然后再与输入的值把他转换成大写或者小写再进行相应的比较就行了


SUBSTR(char,[m[,n]])      第一个参数是源字符串,第二个参数是取子字符串的开始位置,第三个是截取子串的位数

abcde想获取 bcd

SUBSTR('abcde',2,3)

n省略就是截取到结束

m等于0就从首字母截取,m是负数是尾部开始截取    

获取字符串长度LENGTH(char)

CONCAT(char1,char2)

与||操作符作用一样

必须都是字符型或者能转换成字符型

去除子串    TRIM(c2 FROM c1)

从字符串c1中去除字符c2

LTRIM(c1[,c2])  只能去除一个

RTRIM(c1[,c2]) 从右

TRIM(c1)去除首尾空格


REPLACE(char,s_string[,r_string])

省去r_string用空格替换

第一个参数是要替换的字符串是谁

第二个参数是要将原来字符串中哪一个字符串进行替换

第三个参数是替换成什么


日期函数

    系统时间 SYSDATE  默认格式 DD-MON-RR   日-月-年

    SELECT sysdate FROM dual;


ADD_MONTHS(date,i)

返回在指定日期上添加的月份

i可以是任何整数,如果i是小数会截取整数部分

i如果是负数那么就是减去

SELECT add_months(sysdate,3),add_months(sysdate,-3) FROM dual;

结果就是当前的加了3个月,减去三个月

NEXT_DAY(date,char) 第一个参数就是要计算的日期,第二个参数就是星期几     如果在英文的环境下就是MONDAY,.....     

中文环境下就直接  星期三  

如果char的值是'星期一'则返回date指定日期的下周一是哪天

LAST_DAT(date)返回日期date所在月的最后一天 就可以知道是否有31号

MONTH_BETWEEN(date1,date2)

表示两个日期之间间隔的月份,会有小数 

EXTRACT(date FROM datetime)

date返回datetime相应的日期部分

如果想要年份就是year 如果是日期就是day 或者month

也可以  EXTRACT(hour from timestamp '2015-10-1 17:25:13')

获得17


转换函数:在ORACLE当中对不同类型的数据进行转换,在ORACLE可以对兼容的类型进行隐式转换


日期类型转换成字符的函数:

 TO_CHAR(date[,fmt[,params]])

date:将要转化的日期

fmt:转换的格式

params:日期的语言 一般的操作系统的语言  通常不写

默认:DD-MON-RR  天-月-年

           YY YYYY YEAR 年  

            MM MONTH   月

            DD  DAY 天

            HH24 HH12   小时

            MI    SS  分钟和秒

SELECT to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') FROM dual;

字符型转换成日期

TO_DATE(char[,fmt[,params]])

  to_date('2015-05-22','YYYY-MM-DD') 

显示的会按照默认格式显示,我们这个不用的


数字转换成字符的函数

TO_CHAR(number[,fmt])

第一个参数:数字类型       

第二个参数:格式

9:显示数字并忽略前面的0

0:显示数字,位数不足,用0补齐

.或D:显示小数点

,或G:显示千位符

$:美元符号

S:加正负号(前后都可以,但是不能同时加上)


字符转换成数字的函数    

TO_NUMBER(char[,fmt])

fmt是转化的格式,可以省略,就是原来什么样格式就是相应的数字

to_number('$1,000','$999')



在查询中使用函数

在查询中使用字符函数,比如在员工信息表查询出员工的生日 就是根据员工身份证号码得到员工生日

比如SELECT substr(cardid,7,8) FROM users;



猜你喜欢

转载自blog.csdn.net/jhkj_5154/article/details/80621789