Oracle内置SQL函数-分类整理大全(带目录)
- 格式:docx
- 大小:70.38 KB
- 文档页数:43
oracle函数大全(分析函数,聚合函数,转换函数,日期型函数,字符型函数,数值型函数,其他函数)oracle函数大全 (1)oracle分析函数--SQL*PLUS环境 (1)oracle 10g函数大全--聚合函数 (19)oracle 10g函数大全--转换函数 (23)oracle 10g函数大全--日期型函数 (40)oracle 10g函数大全--字符型函数 (45)oracle 10g函数大全--数值型函数 (55)oracle 10g函数大全--其他函数 (58)oracle分析函数--SQL*PLUS环境一、总体介绍1.1.分析函数如何工作语法 FUNCTION_NAME(<参数>,…) OVER (<PARTITION BY 表达式,…> <ORDER BY 表达式 <ASC DESC> <NULLS FIRST NULLS LAST>> <WINDOWING子句>) PARTITION子句ORDER BY子句 WINDOWING子句缺省时相当于RANGE UNBOUNDED PRECEDING1. 值域窗(RANGE WINDOW)RANGE N PRECEDING 仅对数值或日期类型有效,选定窗为排序后当前行之前,某列(即排序列)值大于/小于(当前行该列值–/+ N)的所有行,因此与ORDER BY子句有关系。
2. 行窗(ROW WINDOW)ROWS N PRECEDING 选定窗为当前行及之前N行。
还可以加上BETWEEN AND 形式,例如RANGE BETWEEN m PRECEDING AND n FOLLOWING 函数 AVG(<distinct all> eXPr)一组或选定窗中表达式的平均值 CORR(expr, expr) 即COVAR_POP(exp1,exp2) / (STDDEV_POP(expr1) * STDDEV_POP(expr2)),两个表达式的互相关,-1(反相关) ~1(正相关),0表示不相关COUNT(<distinct> <*> <expr>) 计数COVAR_POP(expr, expr) 总体协方差COVAR_SAMP(expr, expr) 样本协方差CUME_DIST 累积分布,即行在组中的相对位置,返回0 ~ 1DENSE_RANK 行的相对排序(与ORDER BY搭配),相同的值具有一样的序数(NULL计为相同),并不留空序数FIRST_VALUE 一个组的第一个值LAG(expr, <offset>, <default>) 访问之前的行,OFFSET是缺省为1 的正数,表示相对行数,DEFAULT是当超出选定窗范围时的返回值(如第一行不存在之前行)LAST_VALUE 一个组的最后一个值LEAD(expr, <offset>, <default>) 访问之后的行,OFFSET是缺省为1 的正数,表示相对行数,DEFAULT是当超出选定窗范围时的返回值(如最后行不存在之前行)MAX(expr) 最大值MIN(expr) 最小值NTILE(expr) 按表达式的值和行在组中的位置编号,如表达式为4,则组分4份,分别为1 ~ 4的值,而不能等分则多出的部分在值最小的那组PERCENT_RANK 类似CUME_DIST,1/(行的序数 - 1)RANK 相对序数,答应并列,并空出随后序号RATIO_TO_REPORT(expr) 表达式值 / SUM(表达式值)ROW_NUMBER 排序的组中行的偏移STDDEV(expr) 标准差STDDEV_POP(expr) 总体标准差STDDEV_SAMP(expr) 样本标准差SUM(expr) 合计VAR_POP(expr) 总体方差VAR_SAMP(expr) 样本方差VARIANCE(expr) 方差REGR_ xxxx(expr, expr) 线性回归函数REGR_SLOPE:返回斜率,等于COVAR_POP(expr1, expr2) / VAR_POP(expr2) REGR_INTERCEPT:返回回归线的y截距,等于AVG(expr1) - REGR_SLOPE(expr1, expr2) * AVG(expr2)REGR_COUNT:返回用于填充回归线的非空数字对的数目REGR_R2:返回回归线的决定系数,计算式为:If VAR_POP(expr2) = 0 then return NULLIf VAR_POP(expr1) = 0 and VAR_POP(expr2) != 0 then return 1If VAR_POP(expr1) > 0 and VAR_POP(expr2 != 0 thenreturn POWER(CORR(expr1,expr),2)REGR_AVGX:计算回归线的自变量(expr2)的平均值,去掉了空对(expr1, expr2)后,等于AVG(expr2)REGR_AVGY:计算回归线的应变量(expr1)的平均值,去掉了空对(expr1, expr2)后,等于AVG(expr1)REGR_SXX:返回值等于REGR_COUNT(expr1, expr2) * VAR_POP(expr2)REGR_SYY:返回值等于REGR_COUNT(expr1, expr2) * VAR_POP(expr1)REGR_SXY: 返回值等于REGR_COUNT(expr1, expr2) * COVAR_POP(expr1, expr2) 首先:创建表及接入测试数据create table students(id number(15,0),area varchar2(10),stu_type varchar2(2),score number(20,2));insert into students values(1, '111', 'g', 80 );insert into students values(1, '111', 'j', 80 );insert into students values(1, '222', 'g', 89 );insert into students values(1, '222', 'g', 68 );insert into students values(2, '111', 'g', 80 );insert into students values(2, '111', 'j', 70 );insert into students values(2, '222', 'g', 60 );insert into students values(2, '222', 'j', 65 );insert into students values(3, '111', 'g', 75 );insert into students values(3, '111', 'j', 58 );insert into students values(3, '222', 'g', 58 );insert into students values(3, '222', 'j', 90 );insert into students values(4, '111', 'g', 89 );insert into students values(4, '111', 'j', 90 );insert into students values(4, '222', 'g', 90 );insert into students values(4, '222', 'j', 89 ); commit;二、具体应用:1、分组求和:1.2.GROUP BY子句1.2.1.GROUPING SETSselect id,area,stu_type,sum(score) scorefrom studentsgroup by grouping sets((id,area,stu_type),(id,area),id) order by id,area,stu_type;/*--------理解grouping setsselect a, b, c, sum( d ) from tgroup by grouping sets ( a, b, c )等效于select * from (select a, null, null, sum( d ) from t group by a union allselect null, b, null, sum( d ) from t group by b union allselect null, null, c, sum( d ) from t group by c )*/1.2.2.ROLLUPselect id,area,stu_type,sum(score) scorefrom studentsgroup by rollup(id,area,stu_type)order by id,area,stu_type;1.2.3.rollupselect a, b, c, sum( d )from tgroup by rollup(a, b, c);等效于select * from (select a, b, c, sum( d ) from t group by a, b, c union allselect a, b, null, sum( d ) from t group by a, b union allselect a, null, null, sum( d ) from t group by a union allselect null, null, null, sum( d ) from t)*/1.2.4.CUBEselect id,area,stu_type,sum(score) scorefrom studentsgroup by cube(id,area,stu_type)order by id,area,stu_type;/*--------理解cubeselect a, b, c, sum( d ) from tgroup by cube( a, b, c)等效于select a, b, c, sum( d ) from tgroup by grouping sets(( a, b, c ),( a, b ), ( a ), ( b, c ),( b ), ( a, c ), ( c ),() )*/1.2.5.GROUPING/*从上面的结果中我们很容易发现,每个统计数据所对应的行都会出现null,如何来区分到底是根据那个字段做的汇总呢,grouping函数判断是否合计列!*/select decode(grouping(id),1,'all id',id) id,decode(grouping(area),1,'all area',to_char(area)) area,decode(grouping(stu_type),1,'all_stu_type',stu_type) stu_type, sum(score) scorefrom studentsgroup by cube(id,area,stu_type)order by id,area,stu_type;1.3.OVER()函数的使用1.3.1.统计名次1.3.1.1.D ENSE_RANK(),允许并列名次、名次不间断,如122344456将score按ID分组排名:dense_rank() over(partition by id order by score desc)将score不分组排名:dense_rank() over(order by score desc)select id,area,score,dense_rank() over(partition by id order by score desc) 分组id排序, dense_rank() over(order by score desc) 不分组排序from students order by id,area;1.3.1.2.R OW_NUMBER(),不允许并列名次、相同值名次不重复,结果如123456……将score按ID分组排名:row_number() over(partition by id order by score desc)将score不分组排名:row_number() over(order by score desc)select id,area,score,row_number() over(partition by id order by score desc) 分组id排序,row_number() over(order by score desc) 不分组排序from students order by id,area;1.3.1.3.r ank(),允许并列名次、复制名次自动空缺,结果如12245558……将score按ID分组排名:rank() over(partition by id order by score desc) 将score不分组排名:rank() over(order by score desc)select id,area,score,rank() over(partition by id order by score desc) 分组id排序,rank() over(order by score desc) 不分组排序from students order by id,area;1.3.1.4.c ume_dist(),名次分析——-最大排名/总个数函数:cume_dist() over(order by id)select id,area,score,cume_dist() over(order by id) a, --按ID最大排名/总个数cume_dist() over(partition by id order by score desc) b, --ID分组中,scroe最大排名值/本组总个数row_number() over (order by id) 记录号from students order by id,area;1.3.1.5.c ume_dist(),允许并列名次、复制名次自动空缺,取并列后较大名次,结果如22355778……将score按ID分组排名:cume_dist() over(partition by id order by score desc)*sum(1) over(partition by id)将score不分组排名:cume_dist() over(order by score desc)*sum(1) over() select id,area,score,sum(1) over() as 总数,sum(1) over(partition by id) as 分组个数,(cume_dist() over(partition by id order by score desc))*(sum(1)over(partition by id)) 分组id排序,(cume_dist() over(order by score desc))*(sum(1) over()) 不分组排序from students order by id,area1.3.1.6.s um(),max(),avg(),RATIO_TO_REPORT()--分组统计select id,area,sum(1) over() as 总记录数,sum(1) over(partition by id) as 分组记录数,sum(score) over() as 总计 ,sum(score) over(partition by id) as 分组求和,sum(score) over(order by id) as 分组连续求和,sum(score) over(partition by id,area) as 分组ID和area求和,sum(score) over(partition by id order by area) as 分组ID并连续按area求和,max(score) over() as 最大值,max(score) over(partition by id) as 分组最大值,max(score) over(order by id) as 分组连续最大值,max(score) over(partition by id,area) as 分组ID和area求最大值,max(score) over(partition by id order by area) as 分组ID并连续按area求最大值,avg(score) over() as 所有平均,avg(score) over(partition by id) as 分组平均,avg(score) over(order by id) as 分组连续平均,avg(score) over(partition by id,area) as 分组ID和area平均,avg(score) over(partition by id order by area) as 分组ID并连续按area平均,RATIO_TO_REPORT(score) over() as "占所有%",RATIO_TO_REPORT(score) over(partition by id) as "占分组%",score from students;3、LAG(COL,n,default)、LEAD(OL,n,default) --取前后边N条数据取前面记录的值:lag(score,n,x) over(order by id)取后面记录的值:lead(score,n,x) over(order by id)参数:n表示移动N条记录,X表示不存在时填充值,iD表示排序列select id,lag(score,1,0) over(order by id) lg,score from students; select id,lead(score,1,0) over(order by id) lg,score from students;4、FIRST_VALUE()、LAST_VALUE()取第起始1行值:first_value(score,n) over(order by id)取第最后1行值:LAST_value(score,n) over(order by id)select id,first_value(score) over(order by id) fv,score from students; select id,last_value(score) over(order by id) fv,score from students;sum(...) over ...【功能】连续求和分析函数【参数】具体参示例【说明】Oracle分析函数NC示例:select bdcode,sum(1) over(order by bdcode) aa from bd_bdinfo【示例】1.原表信息: SQL> break on deptno skip 1 -- 为效果更明显,把不同部门的数据隔段显示。
oracle sql常用函数Oracle SQL中有许多常用的函数,它们可以用于数据处理、计算和转换。
以下是一些常用的Oracle SQL函数:1. 字符串函数:`SUBSTR(str, start, length)`: 返回字符串str中从start位置开始的长度为length的子串。
`UPPER(str)`: 将字符串str转换为大写。
`LOWER(str)`: 将字符串str转换为小写。
`INSTR(str, substr)`: 返回子串substr在字符串str中第一次出现的位置。
2. 数值函数:`ROUND(num, decimal_places)`: 对num进行四舍五入,保留decimal_places位小数。
`TRUNC(num, decimal_places)`: 对num进行截断,保留decimal_places位小数。
`MOD(n, m)`: 返回n除以m的余数。
3. 日期函数:`SYSDATE`: 返回当前日期和时间。
`TO_CHAR(date, format)`: 将日期date按照指定的格式转换为字符串。
`MONTHS_BETWEEN(date1, date2)`: 返回date1和date2之间相差的月数。
4. 转换函数:`TO_NUMBER(str)`: 将字符串str转换为数值型。
`TO_DATE(str, format)`: 将字符串str按照指定的格式转换为日期型。
5. 聚合函数:`SUM(column)`: 计算指定列的总和。
`AVG(column)`: 计算指定列的平均值。
`COUNT(column)`: 计算指定列的行数。
6. 条件函数:`CASE WHEN condition THEN result1 ELSE result2 END`: 根据条件返回不同的结果。
以上列举的函数只是Oracle SQL中的一部分常用函数,还有许多其他函数可以根据具体的需求进行选择和应用。
Oracle内置函数大全一个数据库系统的生命周期可以分成设计、开发和成品三个阶段。
在设计阶段进行数据库性能优化的成本最低,收益最大。
在成品阶段进行数据库性能优化的成本最高,收益最小。
数据库的优化可以通过对网络、硬件、操作系统、数据库参数和应用程序的优化来进行。
最常见的优化手段就是对硬件的升级。
据统计,对网络、硬件、操作系统、数据库参数进行优化所获得的性能提升,全部加起来只占数据库系统性能提升的40%左右,其余的60%系统性能提升来自对应用程序的优化。
许多优化专家认为,对应用程序的优化可以得到80%的系统性能的提升。
一、数据库性能的优化数据库设计是应用程序设计的基础,其性能直接影响应用程序的性能。
数据库性能包括存储空间需求量的大小和查询响应时间的长短两个方面。
为了优化数据库性能,需要对数据库中的表进行规范化。
规范化的范式可分为第一范式、第二范式、第三范式、BCNF范式、第四范式和第五范式。
一般来说,逻辑数据库设计会满足规范化的前3级标准,但由于满足第三范式的表结构容易维护且基本满足实际应用的要求。
因此,实际应用中一般都按照第三范式的标准进行规范化。
但是,规范化也有缺点:由于将一个表拆分成为多个表,在查询时需要多表连接,降低了查询速度。
由于规范化有可能导致查询速度慢的缺点,考虑到一些应用需要较快的响应速度,在设计表时应同时考虑对某些表进行反规范化。
反规范化可以采用以下几种方法:1. 分割表分割表包括水平分割和垂直分割。
水平分割是按照行将一个表分割为多个表,这可以提高每个表的查询速度,但查询、更新时要选择不同的表,统计时要汇总多个表,因此应用程序会更复杂。
垂直分割是对于一个列很多的表,若某些列的访问频率远远高于其它列,就可以将主键和这些列作为一个表,将主键和其它列作为另外一个表。
通过减少列的宽度,增加了每个数据页的行数,一次I/O 就可以扫描更多的行,从而提高了访问每一个表的速度。
但是由于造成了多表连接,所以应该在同时查询或更新不同分割表中的列的情况比较少的情况下使用。
oracle常用sql函数Oracle是一款非常优秀的数据库管理系统,它提供了很多强大的功能与工具,其中最基本而实用的功能就是SQL函数了。
下面我们将重点介绍一些常用的Oracle SQL函数,帮助读者更好地了解和掌握这些常用的函数,从而更加有效地处理和管理数据。
一、数值型函数1. ABS()函数:用于计算数值的绝对值,比如ABS(-10)会返回10。
2. CEIL()函数:用于向上取整,比如CEIL(3.14)会返回4。
3. FLOOR()函数:用于向下取整,比如FLOOR(3.14)会返回3。
4. MOD()函数:用于求模,比如MOD(12,5)会返回2。
5. ROUND()函数:用于四舍五入,比如ROUND(3.49)会返回3,而ROUND(3.51)会返回4。
二、字符型函数1. CONCAT()函数:用于连接两个字符串,比如CONCAT('hello','world')会返回helloworld。
2. SUBSTR()函数:用于截取字符串,比如SUBSTR('hello',2,3)会返回ell。
3. UPPER()函数:用于将字符串转换成大写,比如UPPER('hello')会返回HELLO。
4. LOWER()函数:用于将字符串转换成小写,比如LOWER('HELLO')会返回hello。
5. TRIM()函数:用于去掉字符串首尾的空格,比如TRIM(' hello ')会返回hello。
三、日期型函数1. CURRENT_DATE函数:用于获取当前日期,比如SELECT CURRENT_DATE FROM DUAL会返回当前日期。
2. SYSDATE函数:用于获取系统当前时间,比如SELECTSYSDATE FROM DUAL会返回系统当前时间。
3. TO_CHAR()函数:用于将日期转换成字符型,比如TO_CHAR(SYSDATE,'yyyy-mm-dd')会返回当前日期的年月日格式。
Oracle SQL 内置函数大全(3)43.CONVERT(c,dset,sset)将源字符串sset从一个语言字符集转换到另一个目的dset字符集SQL> select convert('strutz','we8hp','f7dec') "conversion" from dual;conver------strutz44.HEXTORAW 将一个十六进制构成的字符串转换为二进制45.RAWTOHEXT 将一个二进制构成的字符串转换为十六进制46.ROWIDTOCHAR 将ROWID数据类型转换为字符类型47.TO_CHAR(date,'format')SQL> select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;TO_CHAR(SYSDATE,'YY-------------------2004/05/09 21:14:4148.TO_DATE(string,'format') 将字符串转化为ORACLE中的一个日期49.TO_MULTI_BYTE 将字符串中的单字节字符转化为多字节字符SQL> select to_multi_byte('高') from dual;TO--高50.TO_NUMBER将给出的字符转换为数字SQL> select to_number('1999') year from dual;YEAR---------199951.BFILENAME(dir,file)指定一个外部二进制文件SQL>insert into file_tb1 values(bfilename('lob_dir1','image1.gif'));52.CONVERT('x','desc','source') 将x字段或变量的源source转换为descSQL> select sid,serial#,username,decode(command,2 0,'none',3 2,'insert',4 3,5 'select',6 6,'update',7 7,'delete',8 8,'drop',9 'other') cmd from v$session where type!='background';SID SERIAL# USERNAME CMD--------- --------- ------------------------------ ------1 1 none2 1 none3 1 none4 1 none5 1 none6 1 none7 1275 none8 1275 none9 20 GAO select10 40 GAO none53.DUMP(s,fmt,start,length)DUMP函数以fmt指定的内部数字格式返回一个VARCHAR2类型的值SQL> col global_name for a30SQL> col dump_string for a50SQL> set lin 200SQL> select global_name,dump(global_name,1017,8,5) dump_string from global_name;GLOBAL_NAME DUMP_STRING------------------------------ --------------------------------------------------ORACLE.WORLD Typ=1 Len=12 CharacterSet=ZHS16GBK: W,O,R,L,D54.EMPTY_BLOB()和EMPTY_CLOB()这两个函数都是用来对大数据类型字段进行初始化操作的函数55.GREATEST返回一组表达式中的最大值,即比较字符的编码大小.SQL> select greatest('AA','AB','AC') from dual;GR--ACSQL> select greatest('啊','安','天') from dual;GR--天56.LEAST返回一组表达式中的最小值SQL> select least('啊','安','天') from dual;LE--啊57.UID返回标识当前用户的唯一整数SQL> show userUSER 为"GAO"SQL> select username,user_id from dba_users where user_id=uid;USERNAME USER_ID------------------------------ ---------GAO 25ER返回当前用户的名字SQL> select user from dual;USER------------------------------GAOEREVN返回当前用户环境的信息,opt可以是:ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VS IZEISDBA 查看当前用户是否是DBA如果是则返回trueSQL> select userenv('isdba') from dual;USEREN------FALSESQL> select userenv('isdba') from dual;USEREN------TRUESESSION返回会话标志SQL> select userenv('sessionid') from dual;USERENV('SESSIONID')--------------------152ENTRYID返回会话人口标志SQL> select userenv('entryid') from dual;USERENV('ENTRYID')------------------INSTANCE返回当前INSTANCE的标志SQL> select userenv('instance') from dual;USERENV('INSTANCE')-------------------1LANGUAGE返回当前环境变量SQL> select userenv('language') from dual;USERENV('LANGUAGE')---------------------------------------------------- SIMPLIFIED CHINESE_CHINA.ZHS16GBK LANG返回当前环境的语言的缩写SQL> select userenv('lang') from dual;USERENV('LANG')---------------------------------------------------- ZHSTERMINAL返回用户的终端或机器的标志SQL> select userenv('terminal') from dual;USERENV('TERMINA----------------GAOVSIZE(X)返回X的大小(字节)数SQL> select vsize(user),user from dual;VSIZE(USER) USER----------- ------------------------------6 SYSTEM。
oracle中SQL语句可以使用的函数字符串处理数值运算查一查机械出版社的有关《plsql程序设计〉很多很详细数值函数l ABS(n)—绝对值l CEIL(n)—大于等于n的最小整数l FLOOR(n)—小于等于n的最小整数l MOD(m n) —m除于n的余数l ROUND(n m) —四舍五入l TRUNC(n m) —截取n到m位字符函数l CHR(n)—select chr( ) from dual; l CONCAT(char char )—select concat( a b )from dual; //等于| | l INITCAP—select initcap( gone with the wind ) from dual; l LOWER(str) l LPAD(char n char ) l LTRIMchar) l REPLACE Select REPLACE( JACK AND JUE J BL )FROM DUAL;l RPAD l RTRIM l SUBSTR—字节l SUBSTRB—字符l TRANSLATE l UPPER l ASCII(char) l INSTR/INSTRB l LENGTH/ LENGTH 日期函数l ADD_MONTHS(d n) 加上n 个月的日期l LAST_DAY 本月最后一天l MONTHS_BEEEN 相差月数l SYSDATE l ROUND l TRUNC转换函数l CHARTOROWID: l CONVERT:字符集之间的转换SELECT CONVERT( ABCD US ASCII ZHS GBK ) FROM DUAL; l HEXTORAW l RAWTOHEX l ROWIDTOCHAR l TO_CHAR l TO_DATE l TO_MULTI_BYTE l TO_NUMBER l TO_SINGLE_BYTE l TRANSLATE USING 其它函数DUMP EMPTY_BLOB() /EMPTY_CLOB()BFILENAME CREATEST—最大值LEAST—最小值NVL UID USER USERENV SELECT USERENV( ISDBA )FROM DUAL;SELECT USERENV( LANGUAGE )FROM DUAL;SELECT USERENV( LANG )FROM DUAL;SELECT USERENV( TERMINAL )FROM DUAL;SELECT USERENV( SESSIONID )FROM DUAL;SELECT USERENV( ENTRYID )FROM DUAL;SELECT USERENV( INSTANCE ) FROM DUAL; l VSIZE:内码字节数对象引用函数DEREF REFTOHEX MAKE_REF 组函数()DISTINCT 非重复值(+ )/ ALL 包括重复值( + + + )/ 在组函数中除了COUNT(*)之外所有的函数都忽略NULL A=( NULL )AVG(A)=( + + + )/ 所以一定要用NVL AVG COUNT MAX MIN STDDEV SUM VARIANCE lishixinzhi/Article/program/Oracle/201311/17885。
Oracl e SQL 内置函数大全(一)整理时间[2005-10-14] 阅读次数[6224]导读:Oracle SQL 内置函数大全(一)Oracle SQL 内置函数大全(二)Oracle SQL 内置函数大全(三)________________________________________文字大小:【大】【中】【小】SQL中的单记录函数1.ASCII返回与指定的字符对应的十进制数;SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;A a ZERO SPACE--------- --------- --------- ---------65 97 48 322. 2.CHR给出整数,返回对应的字符;SQL> select chr(54740) zhao,chr(65) chr65 from dual;ZH C-- -赵A3. 3.CONCAT连接两个字符串;SQL> select concat('010-','88888888')||'转23' 高乾竞电话from dual; 高乾竞电话----------------010-********转234. 4.INITCAP返回字符串并将字符串的第一个字母变为大写;SQL> select initcap('smith') upp from dual;UPP-----Smith5. 5.INSTR(C1,C2,I,J)在一个字符串中搜索指定的字符,返回发现指定的字符的位置;C1 被搜索的字符串C2 希望搜索的字符串I 搜索的开始位置,默认为1J 出现的位置,默认为1(第一次?)SQL> select instr('oracle traning','ra',1,2) instring from dual;INSTRING---------96. 6.LENGTH返回字符串的长度;SQL> selectname,length(name),addr,length(addr),sal,length(to_char(sal))from .nchar_tst; NAME LENGTH(NAME) ADDR LENGTH(ADDR) SALLENGTH(TO_CHAR(SAL))------ ------------ ---------------- ------------ --------- --------------------高乾竞 3 北京市海锭区 6 9999.99 7。
oracle函数列表word版pl/sql单行函数和组函数详解函数是具有零个或多个参数和一个返回值的程序。
在SQL中,Oracle构建了一系列函数,这些函数可以称为SQL或PL/SQL语句。
功能主要分为两类:单线功能;组函数本文将讨论如何使用单行函数和使用规则。
SQL中的单行函数sql和pl/sql中自带很多类型的函数,有字符、数字、日期、转换、和混合型等多种函数用于处理单行数据,因此这些都可被统称为单行函数。
这些函数均可用于select,where、orderby等子句中,例如下面的例子中就包含了to_char,upper,soundex 等单行函数。
从EmpWhereUpper(ename)中选择ename、to_uchar(hiredate,'day,dd mon yyyy'),如'al%'orderbysoundex(ename)单行函数也可以在其他语句中使用,如update的set子句,insert的values子句,delet的where子句,认证考试特别注意在select语句中使用这些函数,所以我们的注意力也集中在select语句中。
null和单行函数很难从如何理解null开始,即使是非常有经验的人也仍然对它感到困惑。
空值表示未知数据或空值。
如果算术运算符的任何操作数为空,则结果将为空值。
这条规则也适用于许多功能。
调用null参数时,只有concat、decode、dump、NVL和replace可以返回非null值。
其中,NVL函数是最重要的,因为它可以直接处理空值。
NVL有两个参数:NVL(x1,x2),x1和x2都是表达式。
当X1为空时,返回X2,否则返回X1。
现在让我们看一下EMP数据表,包括工资和奖金,总的补偿需要计算。
columnnameemp_idsalarybonuskeytypepknulls/uniquenn,unnfktabledatatypenumbernum bernumberlength11.211.2如果一行为空,结果将为空,而不是简单地将工资和奖金相加。
目录F.1字符函数——返回字符值 (7)ASCII (7)CHR (7)CONCAT (8)INITCAP (8)LTRIM (8)LOWER (9)NLS_INITCAP (9)NLS_LOWER (9)NLS_UPPER (9)REPLACE (10)RPAD (10)LPAD (10)RTRIM (11)SOUNDEX (11)SUBSTR (11)SUBSTRB (12)TRANSLATE (12)TRIM (12)UPPER (12)F.2字符函数——返回数字 (13)ASCII (13)INSTR (13)LENGTH (14)LENGTHB (14)NLSSORT (14)F.3数字函数 (14)ABS (15)ACOS (15)ASIN (15)ATAN (15)ATAN2 (15)CEIL (16)COS (16)COSH (16)EXP (16)FLOOR (16)LN (17)LOG (17)MOD (17)POWER (17)ROUND (17)SIGN (18)SIN (18)SINH (18)SQRT (18)TAN (18)TRUNC (19)F.4日期函数 (19)ADD_MONTHS (19)LAST_DAY (19)MONTHS_BETWEEN (20)NEW_TIME (20)NEXT_DAY (20)ROUND (20)SYSDATE (21)TRUNC (21)F.5转换函数 (21)CHARTOROWID (21)CONVERT (22)HEXTORAW (22)RAWTOHEX (22)ROWIDTOCHAR (22)TO_CHAR(dates) (23)TO_CHAR(labels) (23)TO_CHAR(numbers) (23)TO_DATE (24)TO_LABEL (24)TO_MULTI_BYTE (24)TO_NUMBER (24)TO_SINGLE_BYTE (25)F.6分组函数 (25)AVG (25)COUNT (26)GLB (26)LUB (26)MAX (26)MIN (26)STDDEV (27)SUM (27)VARIANCE (27)F.7其他函数 (27)BFILENAME (27)DECODE (27)DUMP (28)EMPTY_CLOB/EMPTY_BLOB (29)GREATEST (29)GREATEST_LB (29)LEAST (30)LEAST_UB (30)NVL (30)UID (30)USER (31)USERENV (31)VSIZE (31)F.8 sqlplus常用命令 (31)SPOOL将屏幕所有的输出输出到指定文件 (31)执行一个SQL脚本文件 (32)对当前的输入进行编辑 (32)重新运行上一次运行的sql语句 (32)显示一个表的结构 (32)清屏 (32)退出 (32)置当前session是否对修改的数据进行自动提交 (33)在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句 (33)是否显示当前sql语句查询或修改的行数 (33)是否显示列标题 (33)设置一行可以容纳的字符数 (33)设置页与页之间的分隔 (34)设置一页有多少行数 (34)是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息。
(34)是否在屏幕上显示输出的内容,主要用与SPOOL结合使用。
(34)在dos里连接oracle数据库 (35)在sql*plus中连接到指定的数据库 (35)显示当前用户 (35)显示当前环境变量的值: (35)显示当前在创建函数、存储过程、触发器、包等对象的错误信息 (35)显示数据库的版本: (35)显示SGA的大小 (35)显示初始化参数的值: (35)查看当前用户的缺省表空间 (36)查看当前用户的角色 (36)查看当前用户的系统权限和表级权限 (36)查看用户下所有的表 (36)查看名称包含log字符的表 (36)查看某表的创建时间 (36)查看某表的大小 (36)查看放在ORACLE的内存区里的表 (36)查看索引个数和类别 (37)查看索引被索引的字段 (37)查看索引的大小 (37)查看序列号,last_number是当前值 (37)查看视图的名称 (37)查看创建视图的select语句 (37)查看同义词的名称 (37)查看某表的约束条件 (37)查看函数和过程 (38)查看函数和过程的源代码 (38)查看表空间的名称及大小 (38)查看表空间物理文件的名称及大小 (38)查看回滚段名称及大小 (39)查看控制文件 (39)查看日志文件 (39)查看表空间的使用情况 (39)查看数据库库对象 (40)查看数据库的版本 (40)查看数据库的创建日期和归档方式 (40)用系统管理员,查看当前数据库有几个用户连接: (40)如果要停某个连接用 (40)如果这命令不行,找它UNIX的进程数 (40)树形递归查询:Start with...Connect By .. (41)F.9 oracle客户端连接的文件配置: (42)F.10修改表结构 (43)F.1字符函数——返回字符值这些函数全都接收的是字符族类型的参数(CHR除外)并且返回字符值.除了特别说明的之外,这些函数大部分返回VARCHAR2类型的数值.字符函数的返回类型所受的限制和基本数据库类型所受的限制是相同的,比如: VARCHAR2数值被限制为2000字符(ORACLE 8中为4000字符),而CHAR数值被限制为255字符(在ORACLE8中是2000).当在过程性语句中使用时,它们可以被赋值给VARCHAR2或者CHAR类型的PL/SQL变量.ASCII语法:ascii(char c)功能:返回一个字符串的第一个字符的ASCII码,他的逆函数是CHR()使用位置:过程性语句和SQL语句。
select ascii('罗') from dual;select chr(49886) from dual;CHR语法: chr(x)功能:返回在数据库字符集中与X拥有等价数值的字符。
CHR和ASCII是一对反函数。
经过CHR转换后的字符再经过ASCII转换又得到了原来的字符。
使用位置:过程性语句和SQL语句。
CONCAT语法:CONCAT(c1,c2)功能:c1,c2均为字符串,函数将c2连接到c1的后面,如果c1为null,将返回c2.如果c2为null,则返回c1,如果c1、c2都为null,则返回null,他和操作符||返回的结果相同.使用位置:过程性语句和SQL语句。
INITCAP语法:INITCAP(string)功能:返回字符串的每个单词的第一个字母大写而单词中的其他字母小写的string。
单词是用.空格或给字母数字字符由空格,控制字符,标点符号进行分隔。
不是字母的字符不变动。
使用位置:过程性语句和SQL语句。
select INITCAP('luo,jia,you')from dual;select INITCAP('luo jia you')from dual;LTRIM语法:LTRIM(string1,string2)功能:返回删除从左边算起出现在string2中的字符的string1。
String2被缺省设置为单个的空格。
数据库将扫描string1,从最左边开始。
当遇到不在string2中的第一个字符,结果就被返回了。
LTRIM的行为方式与RTRIM很相似。
使用位置:过程性语句和SQL语句。
LOWER语法:LOWER(string)功能:返回字符串,并将所有的字符小写使用位置:过程性语句和SQL语句。
NLS_INITCAP语法:NLS_INITCAP(string[,nlsparams])功能:返回字符串每个单词第一个字母大写而单词中的其他字母小写的string,nlsparams指定了不同于该会话缺省值的不同排序序列。
如果不指定参数,则功能和INITCAP相同。
Nlsparams可以使用的形式是:‘NLS_SORT=sort’这里sort制订了一个语言排序序列。
使用位置:过程性语句和SQL语句。
NLS_LOWER语法:NLS_LOWER(string[,nlsparams])功能:返回字符串中的所有字母都是小写形式的string。
不是字母的字符不变。
Nlsparams参数的形式与用途和NLS_INITCAP中的nlsparams参数是相同的。
如果nlsparams没有被包含,那么NLS_LOWER所作的处理和LOWER相同。
使用位置;过程性语句和SQL语句。
NLS_UPPER语法:nls_upper(string[,nlsparams])功能:返回字符串中的所有字母都是大写的形式的string。
不是字母的字符不变。
nlsparams参数的形式与用途和NLS_INITCAP中的相同。
如果没有设定参数,则NLS_UPPER功能和UPPER相同。
使用位置:过程性语句和SQL语句。
REPLACE语法:REPLACE(string,search_str[,replace_str])功能:把string中的所有的子字符串search_str用可选的replace_str替换,如果没有指定replace_str,所有的string中的子字符串search_str都将被删除。
REPLACE是TRANSLATE所提供的功能的一个子集。
使用位置:过程性语句和SQL语句。
RPAD语法:RPAD(string1,x[,string2])功能:返回在X字符长度的位置上插入一个string2中的字符的string1。
如果string2的长度要比X字符少,就按照需要进行复制。
如果string2多于X字符,则仅string1前面的X各字符被使用。
如果没有指定string2,那么使用空格进行填充。
X是使用显示长度可以比字符串的实际长度要长。
RPAD的行为方式与LPAD很相似,除了它是在右边而不是在左边进行填充。
使用位置:过程性语句和SQL语句。
LPAD语法:LPAD(string1,x[,string2])功能:返回在X字符长度的位置上插入一个string2中的字符的string1。
如果string2的长度要比X字符少,就按照需要进行复制。
如果string2多于X字符,则仅string1前面的X各字符被使用。
如果没有指定string2,那么使用空格进行填充。
X是使用显示长度可以比字符串的实际长度要长。
RPAD的行为方式与LPAD很相似,除了它是在右边而不是在左边进行填充。
String1,string2均为字符串,x为整数。