ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Oracle中常用的的函数

2021-09-22 19:57:52  阅读:131  来源: 互联网

标签:返回 字符 常用 函数 字符串 参数 Oracle c2 c1


Oracle中常用的的函数

1.数值型函数

1.ABS(x)
【功能】返回x的绝对值
【参数】x,数字型表达式
【返回】数字
2.ceil(x)
【功能】向上取整
【参数】x,数字型表达式
【返回】数字
3.floor(x)
【功能】向下取整
【参数】x,数字型表达式
【返回】数字
4.power(x,y)
【功能】返回x的y次幂
【参数】x,y 数字型表达式
【返回】数字
5mod(x,y)
【功能】返回x除以y的余数
【参数】x,y,数字型表达式
【返回】数字
6.round(x[,y])
【功能】返回四舍五入后的值
【参数】x,y,数字型表达式,如果y不为整数则截取y整数部分,如果y>0则四舍五入为y位小数,如果y小于0则四舍五入到小数点向左第y位。
【返回】数字
6trunc(x[,y])
【功能】返回x按精度y截取后的值,和round作用相似只是不用进行四舍五入
【参数】x,y,数字型表达式,如果y不为整数则截取y整数部分,如果y>0则截取到y位小数,如果y小于0则截取到小数点向左第y位,小数前其它数据用0表示。
【返回】数字

2.字符型函数

1.CONCAT(c1,c2)
【功能】连接两个字符串
【参数】c1,c2 字符型表达式
【返回】字符型
2INITCAP(c1)
【功能】返回字符串并将字符串的第一个字母变为大写,其它字母小写;
【参数】c1字符型表达式
【返回】字符型
eg: select initcap('accd fDS fS') from dual;
out:Accd Fds Fs
3.LOWER(c1)/UPPER(c1)
【功能】:将字符串全部转为小写/大写
【参数】:c1,字符表达式
【返回】:字符型
4.INSTR(C1,C2[,I[,J]])
【功能】在一个字符串中搜索指定的字符,返回发现指定的字符的位置;
【参数】
    C1   被搜索的字符串
    C2   希望搜索的字符串
    I    搜索的开始位置,默认为1
    J    第J次出现的位置,默认为1
【返回】数值
eg:select instr('accd','c',1,2) from dual;
out:3
5.LENGTH(c1)
【功能】返回字符串的长度;
【说明】多字节符(汉字、全角符等),按1个字符计算
【参数】C1 字符串
【返回】数值型
6.LPAD(c1,n[,c2])
【功能】在字符串c1的左边用字符串c2填充,直到长度为n时为止
【参数】
	C1 字符串
	n 追加后字符总长度
	c2 追加字符串,默认为空格
【返回】字符型
【说明】如果c1长度大于n,则返回c1左边n个字符;如果如果c1长度小于n,c2和c1连接后大于n,则返回连接后的右边n个字符
7.RPAD(c1,n[,c2])
【功能】在字符串c1的右边用字符串c2填充,直到长度为n时为止
【参数】C1 字符串
    n 追加后字符总长度
    c2 追加字符串,默认为空格
【返回】字符型
【说明】如果c1长度大于n,则返回c1左边n个字符;如果如果c1长度小于n,c1和c2连接后大于n,则返回连接后的左边n个字符
 如果如果c1长度小于n,c1和c2连接后小于n,则返回c1与多个重复c2连接(总长度>=n)后的左边n个字符
8.LTRIM(c1,[,c2])/RTRIM(c1,[,c2])
【功能】删除左/右边出现的字符串
【参数】
	C1 字符串
	c2 追加字符串,默认为空格
【返回】字符型
9.TRIM(c1 from c2)
【功能】删除左边和右边出现的字符串
【参数】
	C2 删除前字符串
	c1 删除字符串,默认为空格
【返回】字符型
10.REPLACE(c1,c2[,c3])
【功能】将字符表达式值中,部分相同字符串,替换成新的字符串
【参数】
    c1   希望被替换的字符或变量 
    c2   被替换的字符串(换谁)
    c3   要替换的字符串 (换成什么,默认是删除)
【返回】字符型
11.SUBSTR(c1,n1[,n2])
【功能】取子字符串
【说明】多字节符(汉字、全角符等),按1个字符计算
【参数】在字符表达式c1里,从n1开始取n2个字符;若不指定n2,则从第n1个字符直到结束
【返回】字符型
12.TRANSLATE(c1,c2,c3)
【功能】将字符表达式值中,指定字符替换为新字符
eg:select translate('abeda','ab','d') from dual;
out:dedd
具体解析请见我的博客:https://mp.csdn.net/mp_blog/creation/editor/119684830

3.日期函数

1.sysdate/current_date
【功能】:返回当前日期。
【参数】:没有参数,没有括号
【返回】:日期
2.add_months(d1,n1)
【功能】:返回在日期d1基础上再加n1个月后新的日期。
【参数】:d1,日期型,n1数字型
【返回】:日期
3.last_day(d1)
【功能】:返回日期d1所在月份最后一天的日期。注:没有first_day();
【参数】:d1,日期型
【返回】:日期
4.months_between(d1,d2)
【功能】:返回日期d1到日期d2之间的月数。
【参数】:d1,d2 日期型
【返回】:数字
如果d1>d2,则返回正数
如果d1<d2,则返回负数
5.round(d1[,c1])
【功能】:给出日期d1按期间(参数c1)四舍五入后的期间的第一天日期(与数值四舍五入意思相近)
【参数】:d1日期型,c1为字符型(参数),c1默认为j(即最近0点日期)
【参数表】:
    c1对应的参数表:
    最近0点日期: 取消参数c1或j
    最近的星期日:day或dy或d
    最近月初日期:month或mon或mm或rm 
    最近季日期:q
    最近年初日期:syear或year或yyyy或yyy或yy或y(多个y表示精度)  
    最近世纪初日期:cc或scc
【返回】:日期 
【示例】
    select sysdate 当时日期,
    round(sysdate) 最近0点日期,
    round(sysdate,'day') 最近星期日,
    round(sysdate,'month') 最近月初,
    round(sysdate,'q') 最近季初日期, 
    round(sysdate,'year') 最近年初日期 from dual;
6.trunc(d1[,c1])
【功能】:返回日期d1所在期间(参数c1)的第一天日期
【参数】:d1日期型,c1为字符型(参数),c1默认为j(即当前日期)
【参数表】:
    c1对应的参数表:
    最近0点日期: 取消参数c1或j
    最近的星期日:day或dy或d (每周顺序:日,一,二,三,四,五,六)
    最近月初日期:month或mon或mm或rm 
    最近季日期:q
    最近年初日期:syear或year或yyyy或yyy或yy或y(多个y表示精度)  
    最近世纪初日期:cc或scc
【返回】:日期 
【示例】
    select sysdate 当时日期,
    trunc(sysdate) 今天日期,
    trunc(sysdate,'day') 本周星期日,
    trunc(sysdate,'month') 本月初,
    trunc(sysdate,'q') 本季初日期, 
    trunc(sysdate,'year') 本年初日期 from dual;
7.next_day(d1[,c1])
【功能】:返回日期d1的下个星期几(参数c1)的日期
【参数】:d1日期型,c1为字符型(参数),c1默认为j(即当前日期)
【参数表】:c1对应:星期一,星期二,星期三……星期日
【返回】:日期 
【示例】
    select sysdate 当时日期,
    next_day(sysdate,'星期一') 下个星期一,
    next_day(sysdate,'星期二') 下个星期二,
    next_day(sysdate,'星期三') 下个星期三,
    next_day(sysdate,'星期四') 下个星期四,
    next_day(sysdate,'星期五') 下个星期五,
    next_day(sysdate,'星期六') 下个星期六,
    next_day(sysdate,'星期日') 下个星期日 from dual;
8.extract(c1 from d1)
【功能】:日期/时间d1中,参数(c1)的值
【参数】:d1日期型(date)/日期时间型(timestamp),c1为字符型(参数)
【参数表】:
	c1对应的参数表详见示例
【返回】:字符
【示例】
只可以从一个date类型中截取年月日
    select sysdate 当前日期,
    extract(DAY from sysdate ) 日,
    extract(MONTH from sysdate ) 月,
    extract(YEAR from sysdate ) 年
    from dual;
从timestamp中获取年月日时分秒
    select 
    extract(year from systimestamp) year,
    extract(month from systimestamp) month,
    extract(day from systimestamp) day,
    extract(minute from systimestamp) minute,
    extract(second from systimestamp) second,
    extract(timezone_hour from systimestamp) th,
    extract(timezone_minute from systimestamp) tm,
    extract(timezone_region from systimestamp) tr,
    extract(timezone_abbr from systimestamp) ta
    from dual

4.转换函数

1.TO_CHAR(x[[,c2],C3])
【功能】将日期或数据转换为char数据类型
【参数】
x是一个date或number数据类型。
c2为格式参数
c3为NLS设置参数
如果x为日期nlsparm=NLS_DATE_LANGUAGE 控制返回的月份和日份所使用的语言。
如果x为数字nlsparm=NLS_NUMERIC_CHARACTERS 用来指定小数位和千分位的分隔符,以及货币符号。
NLS_NUMERIC_CHARACTERS ="dg", NLS_CURRENCY="string"
【示例】1
    to_char(sysdate,'d') 每周第几天 
    to_char(sysdate,'dd') 每月第几天 
    to_char(sysdate,'ddd') 每年第几天 
    to_char(sysdate,'ww') 每年第几周 
    to_char(sysdate,'mm') 每年第几月 
    to_char(sysdate,'q') 每年第几季 
    to_char(sysdate,'yyyy') 年
2.TO_DATE(X[,c2[,c3]])
【功能】将字符串X转化为日期型
【参数】c2,c3,字符型,参照to_char()
【返回】字符串
如果x格式为日期型(date)格式时,则相同表达:date x
如果x格式为日期时间型(timestamp)格式时,则相同表达:timestamp x
【相反】 to_char(date[,c2[,c3]])
【示例】
    select to_date('199912','yyyymm'),
    to_date('2000.05.20','yyyy.mm.dd'),
    (date '2008-12-31') XXdate, 
    to_date('2008-12-31 12:31:30','yyyy-mm-dd hh24:mi:ss'),
    (timestamp '2008-12-31 12:31:30') XXtimestamp
    from dual;

5.聚合函数

1.AVG([distinct|all]x)
【功能】统计数据表选中行x列的平均值。
【说明】该函数有局限如果有空的话该列不参与计算所以通常nvl一起使用
eg :avg(nvl(列名,0))
【参数】
    all表示对所有的值求平均值,distinct只对不同的值求平均值,默认为all
    如果有参数distinct或all,需有空格与x(列)隔开。
【参数】x,只能为数值型字段
【返回】数字值
2.SUM([distinct|all]x)
【功能】统计数据表选中行x列的合计值。
【参数】
    all表示对所有的值求合计值,distinct只对不同的值求合计值,默认为all
    如果有参数distinct或all,需有空格与x(列)隔开。
【参数】x,只能为数值型字段
【返回】数字值
3.count(*|[distinct|all]x)
【功能】统计数据表选中行x列的合计值。
【参数】
    *表示对满足条件的所有行统计,不管其是否重复或有空值(NULL)
    all表示对所有的值统计,默认为all
    distinct只对不同的值统计,
    如果有参数distinct或all,需有空格与x(列)隔开,均忽略空值(NULL)。
【参数】x,可为数字、字符、日期型及其它类型的字段
【返回】数字值
4.MAX/MIN([distinct|all]x)
【功能】统计数据表选中行x列的最大/小值。
【参数】all表示对所有的值求最大/小值,distinct只对不同的值求最大/小值,默认为all
如果有参数distinct或all,需有空格与x(列)隔开。
【参数】x,可为数字、字符或日期型字段
【返回】对应x字段类型

6.其他函数

1.【语法】NVL (expr1, expr2)
 【功能】若expr1为NULL,返回expr2;expr1不为NULL,返回expr1。注意两者的类型要一致 
 【语法】NVL2 (expr1, expr2, expr3) 
 【功能】expr1不为NULL,返回expr2;expr1为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型 
2.case [<表达式>]
when <表达式条件值1> then <满足条件时返回值1> 
[when <表达式条件值2> then <满足条件时返回值2> 
……
[else  <不满足上述条件时返回值>]]
end
【功能】当:<表达式>=<表达式条件值1……n> 时,返回对应 <满足条件时返回值1……n> 
当<表达式条件值1……n>不为条件表达式时,与函数decode()相同,
decode(<表达式>,<表达式条件值1>,<满足条件时返回值1>,<表达式条件值2>,<满足条件时返回值2> ……,<不满足上述条件时返回值>)
【参数】
<表达式> 默认为true (逻辑型)
<表达式条件值1……n> 类型要与<表达式>类型一致,
若<表达式>为字符型,则<表达式条件值1……n>也要为字符型
eg: 
SELECT CASE 表达式
	WHEN 表达式条件值1 THEN 满足条件时返回值1
	WHEN 表达式条件值1 THEN 满足条件时返回值1
	WHEN 表达式条件值1 THEN  满足条件时返回值1
	ELSE 不满足上述条件时返回值
END  
from dual;
3.decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
【功能】根据条件返回相应值
【参数】c1, c2, ...,cn,字符型/数值型/日期型,必须类型相同或null
注:值1……n 不能为条件表达式,这种情况只能用case when then end解决

4.dbms_random
  dbms_random.value方法这种用法没有参数,会返回一个具有38位精度的数值,范围从0.0到1.0,但不包括1.0。
  dbms.random,value(n1,n2),value带有两个参数,第一个指下限,第二个指上限,将会生成下限到上限之间的数字,但不包含上限。
dbms_random.string(opt CHAR, len NUMBER) 方法
opt :

■ 'u', 'U' - returning string in uppercase alpha characters
									返回大写字母的字符串
■ 'l', 'L' - returning string in lowercase alpha characters
									返回小写字母的字符串
■ 'a', 'A' - returning string in mixed case alpha characters
									返回大小写混合的字符串
■ 'x', 'X' - returning string in uppercase alpha-numericcharacters
									返回大写字母数字字符串
■ 'p', 'P' - returning string in any printable characters.Otherwise the returning string is in uppercase alphacharacters.
									返回任意可打印字符的字符串。否则返回的字符串是大写字母。
len :
表示返回的字符串长度。

标签:返回,字符,常用,函数,字符串,参数,Oracle,c2,c1
来源: https://blog.csdn.net/weixin_53238015/article/details/120421781

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有