ORACLE 内置函数大全
ORACLE 聚合函数(共7个)
ORACLE 聚合函数(共7个)AVG([distinct|all]x)【功能】统计数据表选中行x列的平均值。
【参数】all表示对所有的值求平均值,distinct只对不同的值求平均值,默认为all 如果有参数distinct或all,需有空格与x(列)隔开。
【参数】x,只能为数值型字段【返回】数字值【示例】环境:create table table3(xm varchar(8),sal number(7,2));insert into table3 values('gao',1111.11);insert into table3 values('gao',1111.11); insert into table3 values('zhu',5555.55);commit;执行统计:select avg(distinct sal),avg(all sal),avg(sal) from table3;结果: 3333.33 2592.59 2592.59SUM([distinct|all]x)【功能】统计数据表选中行x列的合计值。
【参数】all表示对所有的值求合计值,distinct只对不同的值求合计值,默认为all 如果有参数distinct或all,需有空格与x(列)隔开。
【参数】x,只能为数值型字段【返回】数字值【示例】环境:create table table3(xm varchar(8),sal number(7,2));insert into table3 values('gao',1111.11);insert into table3 values('gao',1111.11);insert into table3 values('zhu',5555.55);commit;执行统计:select SUM(distinct sal),SUM(all sal),SUM(sal) from table3;结果: 6666.66 7777.77 7777.77STDDEV([distinct|all]x)【功能】统计数据表选中行x列的标准误差。
oralce函数
oralce函数Oracle是一种关系数据库管理系统,它使用了一种名为Oracle数据库的数据库管理系统。
Oracle是一种强大的工具,提供了许多内置函数,可以用于在数据库中进行各种操作。
以下是一些常用的Oracle函数。
1.聚合函数-AVG:计算指定列的平均值。
-COUNT:计算指定列中非空数据的数量。
-SUM:计算指定列的总和。
-MAX:找到指定列的最大值。
-MIN:找到指定列的最小值。
2.字符串函数-CONCAT:将两个字符串连接成一个字符串。
-LOWER:将字符串转换为小写。
-UPPER:将字符串转换为大写。
-LENGTH:计算字符串的长度。
-SUBSTR:返回一个字符串的子字符串。
3.数值函数-ROUND:将一个数值四舍五入到指定的小数位数。
-CEIL:向上取整,返回不小于指定数值的最小整数。
-FLOOR:向下取整,返回不大于指定数值的最大整数。
-ABS:返回指定数值的绝对值。
-MOD:返回两个数值的余数。
4.日期和时间函数-SYSDATE:返回当前日期和时间。
-ADD_MONTHS:在指定日期上增加指定的月份。
-TRUNC:截断日期或时间到指定的精度。
-MONTHS_BETWEEN:计算两个日期之间的月数差。
-TO_CHAR:将日期转换为指定格式的字符串。
5.条件函数-DECODE:根据条件返回不同的值。
-CASE:根据条件执行不同的操作。
-NVL:如果给定的表达式为NULL,则将其替换为指定的值。
-NULLIF:如果两个表达式的值相等,则返回NULL。
6.分析函数-ROW_NUMBER:为每一行分配一个唯一的数字。
-RANK:为每一行分配一个排名,如果有并列的值,则排名相同。
-DENSE_RANK:为每一行分配一个排名,如果有并列的值,则排名可以重复。
-LEAD:返回指定行后的值。
-LAG:返回指定行前的值。
上述函数只是Oracle提供的一小部分功能,Oracle还提供了许多其他有用的函数。
Oracle带参数的自定义函数
query_sql := 'select count(1) from ' || table_name;
execute immediate query_sql into t_count;
return t_count;
end;
end getRecordCount;
/
(2) 函数调用
set serverout on
Oracle带参数的自定义函数
Oracle带参数的自定义函数
(1) 函数编写
create or replace function getRecordCount(table_name varchar2) return number as
begin
declare t_count number;
query_sql varchar2(200);
end;
/
执行结果:
The record count of table emp is 14
oracle带参数的自定义函数 oracle带参数的自定义函数 (1)函数编写 create or replace function getrecordcount(table_name varchar2) return number as begin declare t_count number; query_sql varchar2(200); begin query_sql := 'select count(1) from ' || table_name; execute immediate query_sql into t_count; return t_count; end; end getrecordcount; / (2)函数调用 set serverout on declare table_name varchar2(50); begin table_name := 'dept'; dbms_output.put_line('the record count of table ' || table_name || ' is ' || getrecordcount(table_name)); end; / 执行结果: the record count of table dept is 4 pl/sql procedure successfully completed. 换个表名试试: declare table_name varchar2(50); begin table_name := 'emp'; dbms_output.put_line('the record count of table ' || table_name || ' is ' || getrecordcount(table_name)); end; / 执行结果: the record count of table emp is 14 下载文档原格式( word原格式 ,共1页)
oracle 自定义函数
oracle 自定义函数oracle自定义函数是最重要的函数之一,下面就为您介绍oracle自定义函数的使用,实现返回表类型,希望对您能够有所帮助。
oracle中的函数可以返回表类型。
但是,这个表类型实际上是集合类型(与数组类似)这个类型不能直接作为 from 的宾语。
从oracle 9i 开始,提供了一个叫做“管道化表函数”的概念,来解决这个问题。
这种类型的函数,必须返回一个集合类型,且标明 pipelined。
这个函数不能返回具体变量,必须以一个空 return 返回。
这个函数中,通过 pipe row () 语句来送出要返回的表中的每一行。
调用这个函数的时候,通过 table() 关键字把管道流仿真为一个数据集以下是一个十分简单的实例:create table tb1(k number, v varchar2(10));insert into tb1(k, v) values(100,'aaa');insert into tb1(k, v) values(200,'bbb');insert into tb1(k, v) values(200,'ccc');select * from tb1;create type row_type1 as object(k number, v varchar2(10));create type table_type1 as table of row_type1;create or replace function fun1 return table_type1 pipelined asv row_type1;beginformyrow in (select k, v from tb1) loopv := row_type1(myrow.k, myrow.v);pipe row (v);end loop;return;end;select * from table(fun1);。
oracle 的table函数
oracle 的table函数
Oracle中的TABLE函数是用于将嵌套表(nested table)或者VARRAY转换为普通表的函数。
嵌套表是一种特殊的列类型,它允许在单个列中存储多个行值,而VARRAY是一种可以存储固定数量的元素的数组类型。
当我们使用TABLE函数时,它会将嵌套表或VARRAY中的元素展开为普通的行和列,这样我们就可以对这些元素进行查询和操作。
这个功能在处理嵌套表和VARRAY数据时非常有用,因为它允许我们像操作普通表一样来处理这些复杂的数据类型。
在使用TABLE函数时,我们需要使用关键字TABLE来引用嵌套表或VARRAY,并在其后紧跟着实际的列名或表达式。
例如,我们可以这样使用TABLE函数来查询嵌套表中的数据:
SELECT.
FROM TABLE(nested_table_column);
这将会把嵌套表中的数据展开为普通表,然后我们就可以对其
进行普通的SELECT、INSERT、UPDATE和DELETE操作了。
另外,TABLE函数也可以和LATERAL关键字一起使用,以便在查询中引用前面的列。
这在需要对嵌套表中的数据进行进一步处理或者与其他表进行关联时非常有用。
总之,Oracle中的TABLE函数是一个非常有用的工具,它允许我们以普通表的方式来处理嵌套表和VARRAY数据,为我们在处理复杂数据类型时提供了便利。
oracle常用函数使用大全_最新整理
单值函 数在查询 中返回单 个值,可 被应用到 select, where子 句,start with以及 connect by 子句 和having 子句。 (一).数值 型函数 (Number Functions ) 数值型函 数输入数 字型参数 并返回数 值型的值 。多数该 类函数的 返回值支 持38位小 数点,诸 如:COS, COSH, EXP, LN, LOG, SIN, SINH, SQRT, TAN, and TANH 支 持36位小 数点。 ACOS, ASIN, ATAN, and ATAN2支 持30位小
n1<0,则 oracle从 右向左数 确认起始 位置 例如: SELECT SUBSTR( 'What is this',-5,3) FROM DUAL;
n1>c1.len gth则返 回空 例如: SELECT SUBSTR( 'What is this',50,3) FROM DUAL; 然后再请 你猜猜, 如果 n2<1,会 如何返回 值呢
3、 TRUNC(n 1[,n2] 返 回截尾到 n2位小数 的n1的 值,n2缺 省设置为 0,当n2为 缺省设置 时会将n1 截尾为整 数,如果 n2为负 值,就截 尾在小数 点左边相 应的位上 。 例如: SELECT TRUNC(2 3.56),TRU NC(23.56, 1),TRUNC (23.56,-1) FROM DUAL;
例如: SELECT REPLAC E('WWhhh hhaT is tHis w W','W','-') FROM
9、 SOUNDE X(c) 神奇 的函数 啊,该函 数返回字 符串参数 的语音表 示形式, 对于比较 一些读音 相同,但 是拼写不 同的单词 非常有用 。计算语 音的算法 如下:
ORACLE常用函数功能演示
ORACLE常用函数功能演示文档撰写:孟祥新写在前面:ORACLE内置函数,相当于C语言中的库函数,提供了常规数据库编程中所需的绝大多数基本功能,并且通过函数的组合或嵌套使用,可以发挥其强大的功能。
由于这些内置函数都是由ORACLE公司的编程大家所写,而且其执行代码是内嵌在ORACLE数据库系统中的,因此其执行效率极高。
在数据库编程中能广泛使用ORACLE所提供的内置函数,将大大提高程序代码的执行效率。
“站在高人的肩膀上,将使你变得更高”。
演示之前的环境设置:为了在SQL*PLUS中直观地显示函数返回的结果,我将“头”信息先屏蔽掉。
操作如下:一、单行函数1.数值函数(1)三角函数①SIN、ASIN、SINH(正弦、反正弦、双曲正弦)②COS、ACOS、COSH(余弦、反余弦、双曲余弦)③TAN、ATAN、TANH(正切、反正切,双曲正切)(2)幂、方根及对数运算函数①POWER(m, n)(取m的n次幂)②SQRT(n)(取n的平方根)③EXP(n)(取自然对数底e的n次方根)④LN(n)(取n的自然对数)⑤LOG(m, n)(取以m为底n的对数)以上函数功能演示如下:(3)数值处理函数①ABS(n)(取绝对值)②SIGN(n)(符号函数)③CEIL(n)(取不小于n的最小整数)④FLOOR(n)(取不大于n的最大整数)⑤ROUND(n, [m])(按m精度对n进行4舍5入)⑥TRUNC(n, [m])(按m精度对n进行截取)⑦MOD(m, n)(取m除以n的余数)以上函数功能演示如下:2.字符处理函数(1)对字符串的大小写处理的函数①INITCAP(功能:将字符串中每个单词的首字母,变换为大写。
)②UPPER(功能:将字符串中的所有字母,转换为大写。
)③LOWER(功能:将字符串中的所有字母,转换为小写。
)以上函数功能演示如下:(2)对字符串进行处理的函数①CONCAT(字符串连接函数,也可用|| 替代)功能演示如下:②ASCII(取字符的编码)③CHR(将编码转换为对应的字符)以上函数功能演示如下:④LTRIM(去除左侧空格/指定字符)⑤RTRIM(去除右侧空格/指定字符)⑥TRIM(去除两侧的空格/去除指定字符)以上函数去除空格功能演示如下:以上函数去除指定字符功能演示如下:请注意:在用TRIM去除字符串中指定字符(非空格)时的特殊用法。
Oracleform_builder内置函数说明.
abort_query;停止查询的执行add_group_column(record group id或name,group column添加一个列至U—个记录组,Record group idn ame,colu mn type,colu mn width;add_group_row(record group id或name,row number;添加一个行至U—个记录组,record group id是oracle赋予这个组的唯一的名称,row number指定了这个行在组中位置.add」ist_eleme nt(list n ame or list id,list index,list lable,list value;添加一项到下拉列表框,list name是list 的名字,list index 是添加到列表框的索引,list label指定了放入列表中的数值串,list value包含了列表标识所对应的数据库的数值.add_parameter(list或name,parameter,parameter type,valu添加一个参数至U—个参数列表,参数列表是一个变量列表,这些变量将被伟给其他对象,list或name指定了这个列表的标识,parameter type参数类型包含两种可用数值:text_type是一串字符;data_paramete是一个指定已在form中定义的记录组的串.value是传给被调模块的实际数值.application_parameter促使oracle 显示Enter parameter values对话框。
关联了当前菜单form的参数按其数值被显示。
backgrou nd_me nu (1...10从背景菜单中显示一个菜单项bell;促使终址产生一个鸣叫(要有音响或耳机才能听以哦!block_menu;显示一个数值的列表,它包括有效块的名字和它们的序列号break;停止form的执行,显示调试器.注:只能在调试模式时call」nput;接受并执行功能键输入;checkbox_checked( name返回一个真或假的值表示检查框的状态check_record_uniquenes被on_check_unique触发器调用时,为检查主关键字的唯一性而被始化form过程.clear_block人当前的块中清除记录.clear_eol;从光标开始到些行结束清除文本项的值。
oracle的数组函数 -回复
oracle的数组函数-回复Oracle的数组函数是一组在Oracle数据库中使用的能够处理数组数据的函数。
这些函数提供了强大的功能,使得在数据库中处理和操作数组数据变得更加简单和高效。
在本文中,我们将详细介绍Oracle的数组函数,并逐步解释其用法和功能。
为了更好地理解Oracle的数组函数,让我们先来了解什么是数组。
数组是一种数据结构,它可以存储多个相同类型的元素。
在数据库中,数组通常用于存储和处理大量的相似数据,例如一组数字或字符。
Oracle的数组函数提供了各种操作和处理数组数据的功能,从简单的查询和排序到更复杂的数据转换和聚合计算。
首先,让我们从数组的创建开始。
在Oracle中,可以使用数组函数来创建和初始化一个数组。
其中最常用的数组函数之一是`COLLECT`函数。
该函数用于从查询结果集中生成一个数组。
让我们看一个例子:sqlSELECT COLLECT(employee_name) AS namesFROM employees;上述查询将返回所有员工姓名的数组。
接下来,让我们探讨如何使用数组函数来操作和访问数组的元素。
Oracle 提供了一些用于查询和访问数组元素的函数,其中最常用的是`TABLE`函数。
`TABLE`函数用于将数组转换为一个虚拟表,以便可以在查询中访问和操作数组的元素。
例如:sqlSELECT column_valueFROM TABLE(names);上述查询将返回`names`数组中的所有元素。
除了查询和访问数组的元素外,Oracle的数组函数还提供了一些用于修改和操作数组的函数。
其中之一是`MULTISET`函数。
`MULTISET`函数用于在数组中添加或删除元素。
让我们看一个例子:sqlSELECT MULTISET(1, 2, 3) AS numbersFROM dual;上述查询将创建一个包含1、2和3的数组。
在数组操作方面,Oracle还提供了一些用于合并和分割数组的函数。
Oracle内置函数大全
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数字函数(共22个)
oracle数字函数dual是一个"伪表",可以用来测试函数和表达式。
1、Round:四舍五入Round(45.926,2)→45.93Round(45.923,0)保留整数位,结果是46。
Round(45.923,-1)取整数位的第二位。
就是取十位,结果是50。
Round(45.923,-2)取整数位的第三位。
就是取百位,结果为0。
2、Trunc:数字截断Trunc(45.926,2)→45.92语法: TRUNC(x[,y])功能: 计算截尾到y位小数的x值. y缺省为0,结果变为一个整数值.如果y是一个负数,那么就截尾到小数点左边对应的位上.说明:该函数可以指定截取的位数,当不指定截取位时,它只截取小数占左边的数字。
3、Mod:求余语法: MOD(x,y)功能: 返回x除以y的余数.如果y是0,则返回xMod(1600,300)→1004、ABS语法: ABS(x)功能: 得到x的绝对值.SQL> select abs(1) a,abs(0) b,abs(-1) c,abs(-0.1) d from dualA B C D---------- ---------- ---------- ----------1 0 1 .15、CEIL语法: CEIL(x)功能: 计算大于或等于x的最小整数值.SQL> select ceil(0.3) a,ceil(0.5) b,ceil(0.8) c,ceil(0) d from dualA B C D---------- ---------- ---------- ----------1 1 1 06、FLOOR语法: FLOOR(x)功能: 返回小于等于x的最大整数值.SQL> select floor(0.3) a,floor(0.5) b,floor(0.8) c,floor(0) d from dualA B C D---------- ---------- ---------- ------------------0 0 0 07、ACOS语法: ACOS(x)功能: 返回x的反余弦值. x应该从0到1之间的数,结果在0到pi之间,以弧度为单位.SQL> select cos(0.1667) a,acos(0.5) y,cosh(0.5) z from dualA Y Z---------- ---------- -------------------.986137701 1.04719755 1.127625978、ASIN语法: ASIN(x)功能: 计算x的反正弦值. X的范围应该是-1到1之间,返回的结果在-pi/2到pi/2之间,以弧度为单位. SQL> select sin(0.1667) x,asin(0.5) y,sinh(0.5) z from dualX Y Z---------- ---------- ------------------------.165929004 .523598776 .5210953059、ATAN语法: ATAN(x)功能: 计算x的反正切值.返回值在-pi/2到pi/2之间,单位是弧度.SQL> select tan(0.1667) x ,atan(0.5) y,atan2(1,2) z from dualX Y Z---------- ---------- --------------------.168261495 .463647609 .46364760910、ATAN2语法: ATAN2(x,y)功能: 计算x和y的反正切值.结果在负的pi/2到正的pi/2之间,单位是弧度.atan2(x,y)函数表示,返回x/y的反正切等价于atan(x/y)。
oracle内置取最大最小函数:greatest和least
oracle 内置取最大最小函数:greatest 和leastoracle 中取最大值最小值一般想到的就是组函数max 和min ,这也是我的第一想法,但是别忘了,max 和min 是用来取某个字段的最大最小值,并不是说如果你有几个数,然后你直接从它们中取出最大或者最小,由于我不知道greatest 和least 这两个函数,最后我实现的是通过case 去比较的,如果A 大于B 就取A ,否则取B ,现在就可以直接用greatest(A, B)来实现了。
1、coalescue返回表达式列表中第一个非空的值,列表必须都是相同类型,也可以是一个表的同一行、不同列的值进行比较。
1 2 3 4 5 6 7 8 9 10 11 SELECT coalesce(1,NULL,2)FROM dual; -- 返回1SELECT coalesce(NULL,2,1)FROM dual; -- 返回2SELECT coalesce(t.empno,t.mgr)FROM scott.emp t; -- 效果类似 NVL( t.empno, t.mgr )2、greatest返回表达式列表中最大值,列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。
当列表中有一个值为null ,那么就返回null ,这个地方需要注意,如果需要当值为null 的时候,可以考虑用nvl 转为0来进行比较。
1 2 3 4 5 6 7 8 9 10 SELECT greatest(1,3,2) FROM dual; -- 返回3SELECT greatest('A','B','C') FROM dual; -- 返回CSELECT greatest(NULL,'B',11 12 13 14 15 'C')FROM dual; -- 返回nullSELECT greatest(t.empno,t.mgr)FROM scott.emp t; -- 返回empno 和mgr 较大值3、least返回表达式列表中最小值,列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。
Oracle集合操作函数union、intersect、minus
Oracle集合操作函数:union、intersect、minus集合操作符专门用于合并多条select 语句的结果,包括:UNION, UNION ALL, INTERSECT , MINUS。
当使用集合操作符时,必须确保不同查询的列个数和数据类型匹配。
集合操作符具有以下注意事项:∙集合操作符不适用于LOB、VARRAY和嵌套表列。
∙UNION、INTERSECT、MINUS操作符不使用于 LONG列。
∙如果选择列表中包含有表达式或者函数,那么必须为表达式或者函数定义列别名。
1、UNION (无重并集):当执行UNION 时,自动去掉结果集中的重复行,并以第一列的结果进行升序排序。
2、UNION ALL (有重并集):不去掉重复行,并且不对结果集进行排序。
3、INTERSECT (交集):取两个结果集的交集,并且以第一列的结果进行升序排列。
select id,name,job from workerINTERSECTselect empno,ename,job from emp;4、MINUS (差集):只显示在第一个集合中存在,在第二个集合中不存在的数据。
并且以第一列的结果进行升序排序。
5、另外,可以使用order byorder by 必须放在最后一条select 语句之后,当列名相同时,可以直接用列名排序,如果不同可以用位置排序,也可以使用别名使其相同。
select id, name x from new_empunion allselect empno, ename x from emp order by x;//列名不同时使用别名排序select id, name ename from new_empunion allselect empno, ename from emp order by ename;//列名不同时使用别名使其相同后排序select id, name ename from new_empunion allselect empno, ename from emp;//合并后列名显示以前一个表为主。
oracle的数组函数 -回复
oracle的数组函数-回复Oracle数据库是一种关系型数据库管理系统,具有强大的功能和灵活的数据操作能力。
在Oracle中,数组函数是一类用于处理数组数据的函数,它们提供了多种方法来处理和操作数组对象,以便更高效地完成各种数据处理和分析任务。
本文将深入介绍Oracle的数组函数,并一步一步回答相关问题,帮助读者更好地理解和应用这些强大的功能。
第一步:了解Oracle的数组函数Oracle提供了多种数组函数,用于处理和操作数组数据。
这些函数可以在查询语句中使用,以便在数据处理过程中对数组进行操作。
一些常用的Oracle数组函数包括:COLLECT、MULTISET、TABLE、VARRAY 等。
第二步:详细介绍每个数组函数的功能和用法- COLLECT函数:将一列数据转换为一个数组对象。
它将输入的数据集合为一个数组对象,并返回该数组对象。
COLLECT函数的语法如下:COLLECT(expr) [KEEP (DENSE_RANK FIRST ORDER BY ...)]例如:SELECT COLLECT(emp_name) FROM employees;这个查询将返回一个数组对象,其中包含所有员工姓名的集合。
- MULTISET函数:将一列数据转换为一个多集合(即允许重复值的集合)。
MULTISET函数类似于COLLECT函数,不同之处在于它可以包含重复的元素。
MULTISET函数的语法如下:MULTISET(expr)例如:SELECT MULTISET(SELECT emp_name FROM employees) FROM dual;这个查询将返回一个多集合对象,其中包含所有员工姓名的集合,并允许包含重复的姓名。
- TABLE函数:将一个数组对象作为输入,并将其转换为一个虚拟表。
TABLE函数的语法如下:TABLE(collection)例如:SELECT * FROM TABLE(CAST(COLLECT(emp_name) AS sys.odcivarchar2list)) t;这个查询将返回一个虚拟表,其中包含所有员工姓名的集合。
Oracle基础函数汇总
7
语法:lead(lag) (expression[,offsrt[,default])
8
over ([query partition clause] order by clause)
9
10
--累加合计
11
SUM(字段) over(PARTITION BY 字段 ORDER BY 字段 rows 10000000 preceding) AS
3
4 --avg 函数名
5 --(sal)是分析函数的参数,每个函数有0~3个参数,参数可以是表达式
6 --over 是一个关键字,用于标识分析函数
7 --partition by deptno 是可选的分区子句
8
9
10 --等级函数,排序
11 select t.c_store_id,sum(t.tot_qty),
9 --mod
--取余数
10 select mod(20,3)from dual; --2
11
12
13 --常用日期函数
14 /*--运算规律
15
日期 + 数值=日期
16
日期-数值=日期
17
日期-日期=数值(天数)
18 */
19 select sysdate,sysdate+2,sysdate-3,sysdate-
"字段名称"
12
---
13
with order_i as --临时表定义
14
1 --对账单预计算程序
2 CREATE OR REPLACE PROCEDURE rp_cusrecvcheck_generate(p_pi_id NUMBER) AS
oracle加减乘除法函数
oracle加减乘除法函数
Oracle是一种强大的数据库管理系统,它提供了许多内置函数来处理数据。
其中包括加减乘除法函数。
加法函数:Oracle中的加法函数是“+”,它可以用于两个数字之间的相加操作。
例如,要将数字1和数字2相加,可以使用以下语句:
SELECT 1 + 2 FROM dual;
这将返回结果3。
减法函数:Oracle中的减法函数是“-”,它可以用于两个数字之间的相减操作。
例如,要将数字5从数字10中减去,可以使用以下语句:
SELECT 10 - 5 FROM dual;
这将返回结果5。
乘法函数:Oracle中的乘法函数是“*”,它可以用于两个数字之间的相乘操作。
例如,要将数字3和数字4相乘,可以使用以下语句:
SELECT 3 * 4 FROM dual;
这将返回结果12。
除法函数:Oracle中的除法函数是“/”,它可以用于两个数字之间的相除操作。
例如,要将数字10除以数字2,可以使用以下语句:
SELECT 10 / 2 FROM dual;
这将返回结果5。
需要注意的是,在进行除法操作时需要注意被除数不能为0,否则会出现错误。
此外,在进行浮点数运算时还需要考虑精度问题。
总结来说,Oracle提供了四种基本运算符号来处理数据:加号、减号、乘号和除号。
这些运算符号可以用于数字之间的相加、相减、相乘和
相除操作。
在使用这些函数时,需要注意数据类型和精度问题,以确
保计算结果正确。
oracle存储过程常用字符串处理函数
oracle存储过程常用字符串处理函数在Oracle中,常用的字符串处理函数有:
1.CONCAT:用于连接两个或多个字符串。
2.SUBSTR:用于提取字符串的一部分。
3.INSTR:用于查找字符串中特定子串的位置。
4.REPLACE:用于替换字符串中的指定子串。
5.UPPER:用于将字符串转换为大写。
6.LOWER:用于将字符串转换为小写。
7.INITCAP:用于将字符串的首字母转换为大写,其余字母转换为小写。
8.TRIM:用于删除字符串首尾的空格或指定字符。
9.LENGTH:用于返回字符串的长度。
10.LPAD:用于在字符串的左侧填充指定字符,使字符串达到指定长度。
11.RPAD:用于在字符串的右侧填充指定字符,使字符串达到指定长度。
12.TO_CHAR:用于将其他数据类型转换为字符类型。
13.TO_NUMBER:用于将字符类型转换为数字类型。
14.TO_DATE:用于将字符类型转换为日期类型。
15.REGEXP_REPLACE:用于使用正则表达式替换字符串中的指定内容。
以上是一些常用的字符串处理函数,在实际的存储过程中可以根据具
体的需求,选择合适的函数来进行字符串处理。
Oracle函数手册
1. 单行函数1.1 字符函数LOWER 使字符串小写;select LOWER('HeLp') from dual --->helpUPPER 使字符串大写;select UPPER('HeLp') from dual --->HELPINITCAP 使字符串的第一个字母大写,其它为小写select INITCAP('hELp') from dual --->HelpLENGTH 返回表达式中的字符串长度select LENGTH('hELP') from dual ---->4CONCAT 将值连接到一起(,对于此函数,只能使用2个参数)select CONCAT('Hello', 'World') from dual --->HelloWorldSUBSTR 抽取确定长度的字符串select SUBSTR('HelloWorld',1,5) from dual ---->HelloINSTR 查找指定字符的数字位置select INSTR('HelloWorld', 'W') from dual --->6LPAD 按右对齐填充字符串select LPAD(salary,10,'*') from dual --->*****24000RPAD 按左对齐填充字符串select RPAD(salary, 10, '*') from dual --->24000*****TRIM(leading|trailing|both,trim_character FROM trim_source) 从字符串中截去头部或者尾部的字符(或者头尾都截掉)(如果trim_character或trim_source是一个字符型文字值,则必须将它包含在单引号之内。
oracle的数组函数
oracle的数组函数
在Oracle数据库中,有许多用于处理和操作数组的函数。
以下是一些常见的Oracle 数组函数:
1. ARRAY:该函数用于将单个元素或多个元素组合成一个数组。
示例:SELECT ARRAY(1, 2, 3) FROM dual;--返回[1, 2, 3]
2. CARDINALITY:该函数用于返回数组的大小(即元素的数量)。
示例:SELECT CARDINALITY([1, 2, 3]) FROM dual;--返回3
3. MULTISET:该函数用于创建一个集合(multi-set),其中包含数组的所有元素。
它可以用于去重和计算集合的交、并、差等操作。
示例:SELECT MULTISET(1, 2, 2, 3) FROM dual;--返回[1, 2, 2, 3]
4. MEMBER OF:该运算符用于检查一个元素是否属于数组。
如果元素存在于数组中,则返回TRUE;否则返回FALSE。
示例:SELECT 2 MEMBER OF [1, 2, 3] FROM dual;--返回TRUE
5. TREAT:该函数用于将一个表达式视为指定的类型进行处理。
在处理数组时,TREAT函数可以用于访问数组特定位置的元素。
示例:SELECT TREAT([1, 2, 3] AS SYS.ODCINUMBERLIST)(2) FROM dual;--返回2
这些是一些常见的Oracle数组函数,可以帮助您处理和操作数组数据。
请注意,数组在Oracle中通常使用嵌套表(nested table)或V ARRAY(variable-size array)数据类型来表示。
1。
oracle的字符串函数
oracle的字符串函数Oracle是一种广泛使用的关系型数据库管理系统,它提供了许多强大的函数来处理字符串。
在本文中,我将介绍一些常用的Oracle字符串函数。
1. CONCAT函数:CONCAT函数用于连接两个字符串。
它的语法是CONCAT(string1, string2),其中string1和string2是要连接的两个字符串。
例如,如果我们有两个字符串'Hello'和'World',我们可以使用CONCAT函数将它们连接起来,得到'HelloWorld'。
2. SUBSTR函数:SUBSTR函数用于提取字符串的子串。
它的语法是SUBSTR(string, start_position, length),其中string是要提取子串的字符串,start_position是子串的起始位置,length是子串的长度。
例如,如果我们有一个字符串'HelloWorld',我们可以使用SUBSTR函数提取出'World'这个子串,即SUBSTR('HelloWorld', 6, 5)。
3. LENGTH函数:LENGTH函数用于计算字符串的长度。
它的语法是LENGTH(string),其中string是要计算长度的字符串。
例如,如果我们有一个字符串'HelloWorld',我们可以使用LENGTH函数计算出它的长度,即LENGTH('HelloWorld'),结果为10。
4. UPPER函数:UPPER函数用于将字符串转换为大写。
它的语法是UPPER(string),其中string是要转换的字符串。
例如,如果我们有一个字符串'HelloWorld',我们可以使用UPPER函数将它转换为大写,即UPPER('HelloWorld'),结果为'HELLOWORLD'。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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.CHR给出整数,返回对应的字符;SQL> select chr(54740) zhao,chr(65) chr65 from dual;ZH C-- -赵 A3.CONCAT连接两个字符串;SQL> select concat('010-','')||'转23' 高乾竞电话from dual;高乾竞电话----------------010-转234.INITCAP返回字符串并将字符串的第一个字母变为大写;SQL> select initcap('smith') upp from dual;UPP-----Smith5.INSTR(C1,C2,I,J)在一个字符串中搜索指定的字符,返回发现指定的字符的位置;C1 被搜索的字符串C2 希望搜索的字符串I 搜索的开始位置,默认为1J 出现的位置,默认为1SQL> select instr('oracle traning','ra',1,2) instring from dual;INSTRING---------96.LENGTH返回字符串的长度;SQL> select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst; NAME LENGTH(NAME) ADDR LENGTH(ADDR) SALLENGTH(TO_CHAR(SAL))------ ------------ ---------------- ------------ --------- --------------------高乾竞 3 北京市海淀区 6 9999.99 7 7.LOWER返回字符串,并将所有的字符小写SQL> select lower('AaBbCcDd')AaBbCcDd from dual;AABBCCDD--------aabbccdd8.UPPER返回字符串,并将所有的字符大写SQL> select upper('AaBbCcDd') upper from dual;UPPER--------AABBCCDD9.RPAD和LPAD(粘贴字符)RPAD 在列的右边粘贴字符LPAD 在列的左边粘贴字符SQL> select lpad(rpad('gao',10,'*'),17,'*')from dual;LPAD(RPAD('GAO',1-----------------*******gao*******不够字符则用*来填满10.LTRIM和RTRIMLTRIM 删除左边出现的字符串RTRIM 删除右边出现的字符串SQL> select ltrim(rtrim(' gao qian jing ',' '),' ') from dual;LTRIM(RTRIM('-------------gao qian jing11.SUBSTR(string,start,count)取子字符串,从start开始,取count个SQL> select substr('',3,8) from dual;SUBSTR('--------12.REPLACE('string','s1','s2')string 希望被替换的字符或变量s1 被替换的字符串s2 要替换的字符串SQL> select replace('he love you','he','i') from dual;REPLACE('H----------i love you13.SOUNDEX返回一个与给定的字符串读音相同的字符串SQL> create table table1(xm varchar(8));SQL> insert into table1 values('weather');SQL> insert into table1 values('wether');SQL> insert into table1 values('gao');SQL> select xm from table1 where soundex(xm)=soundex('weather'); XM--------weatherwether14.TRIM('s' from 'string')LEADING 剪掉前面的字符TRAILING 剪掉后面的字符如果不指定,默认为空格符15.ABS返回指定值的绝对值SQL> select abs(100),abs(-100) from dual;ABS(100) ABS(-100)--------- ---------100 10016.ACOS给出反余弦的值SQL> select acos(-1) from dual;ACOS(-1)---------3.17.ASIN给出反正弦的值SQL> select asin(0.5) from dual;ASIN(0.5)---------.18.ATAN返回一个数字的反正切值SQL> select atan(1) from dual;ATAN(1)---------.19.CEIL返回大于或等于给出数字的最小整数SQL> select ceil(3.) from dual;CEIL(3.)---------------420.COS返回一个给定数字的余弦SQL> select cos(-3.) from dual;COS(-3.)----------------121.COSH返回一个数字反余弦值SQL> select cosh(20) from dual; COSH(20)---------22.EXP返回一个数字e的n次方根SQL> select exp(2),exp(1) from dual; EXP(2) EXP(1)--------- ---------7. 2.23.FLOOR对给定的数字取整数SQL> select floor(2345.67) from dual; FLOOR(2345.67)--------------234524.LN返回一个数字的对数值SQL> select ln(1),ln(2),ln(2.) from dual;LN(1) LN(2) LN(2.)--------- --------- -------------0 . .25.LOG(n1,n2)返回一个以n1为底n2的对数SQL> select log(2,1),log(2,4) from dual;LOG(2,1) LOG(2,4)--------- ---------0 226.MOD(n1,n2)返回一个n1除以n2的余数SQL> select mod(10,3),mod(3,3),mod(2,3) from dual;MOD(10,3) MOD(3,3) MOD(2,3)--------- --------- ---------1 0 226.Sign(N)返回一个数的正负,正返回1零返回0负返回-127.POWER返回n1的n2次方根SQL> select power(2,10),power(3,3) from dual;POWER(2,10) POWER(3,3)----------- ----------1024 2728.ROUND和TRUNC按照指定的精度进行舍入SQL> select round(55.5),round(-55.4),trunc(55.5),trunc(-55.5) from dual; ROUND(55.5) ROUND(-55.4) TRUNC(55.5) TRUNC(-55.5)----------- ------------ ----------- ------------56 -55 55 -5529.SIGN取数字n的符号,大于0返回1,小于0返回-1,等于0返回0SQL> select sign(123),sign(-100),sign(0) from dual;SIGN(123) SIGN(-100) SIGN(0)--------- ---------- ---------1 -1 030.SIN返回一个数字的正弦值SQL> select sin(1.57079) from dual;SIN(1.57079)------------131.SIGH返回双曲正弦的值SQL> select sin(20),sinh(20) from dual;SIN(20) SINH(20)--------- ---------.32.SQRT返回数字n的根SQL> select sqrt(64),sqrt(10) from dual;SQRT(64) SQRT(10)--------- ---------8 3.33.TAN返回数字的正切值SQL> select tan(20),tan(10) from dual;TAN(20) TAN(10)--------- ---------2. .34.TANH返回数字n的双曲正切值SQL> select tanh(20),tan(20) from dual;TANH(20) TAN(20)--------- ---------1 2.35.TRUNC按照指定的精度截取一个数SQL> select trunc(124.1666,-2) trunc1,trunc(124.16666,2) from dual;TRUNC1 TRUNC(124.16666,2)--------- ------------------100 124.1636.ADD_MONTHS增加或减去月份SQL> select to_char(add_months(to_date('','yyyymm'),2),'yyyymm') from dual;------SQL> select to_char(add_months(to_date('','yyyymm'),-2),'yyyymm') from dual;TO_CHA------ST_DAY返回日期的最后一天SQL> select to_char(sysdate,'yyyy.mm.dd'),to_char((sysdate)+1,'yyyy.mm.dd') from dual; TO_CHAR(SY TO_CHAR((S---------- ----------2004.05.09 2004.05.10SQL> select last_day(sysdate) from dual;LAST_DAY(S----------31-5月-0438.MONTHS_BETWEEN(date2,date1)给出date2-date1的月份SQL> select months_between('19-12月-1999','19-3月-1999') mon_between from dual; MON_BETWEEN-----------9SQL>selectmonths_between(to_date('2000.05.20','yyyy.mm.dd'),to_date('2005.05.20','yyyy.m m.dd')) mon_betw from dual;MON_BETW----------6039.NEW_TIME(date,'this','that')给出在this时区=other时区的日期和时间SQL> select to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') bj_time,to_char(new_time2 (sysdate,'PDT','GMT'),'yyyy.mm.dd hh24:mi:ss') los_angles from dual;BJ_TIME LOS_ANGLES------------------- -------------------2004.05.09 11:05:32 2004.05.09 18:05:3240.NEXT_DAY(date,'day')给出日期date和星期x之后计算下一个星期的日期SQL> select next_day('18-5月-2001','星期五') next_day from dual;NEXT_DAY----------41.SYSDATE用来得到系统的当前日期SQL> select to_char(sysdate,'dd-mm-yyyy day') from dual;TO_CHAR(SYSDATE,'-----------------09-05-2004 星期日trunc(date,fmt)按照给出的要求将日期截断,如果fmt='mi'表示保留分,截断秒SQL> select to_char(trunc(sysdate,'hh'),'yyyy.mm.dd hh24:mi:ss') hh,2 to_char(trunc(sysdate,'mi'),'yyyy.mm.dd hh24:mi:ss') hhmm from dual; HH HHMM------------------- -------------------2004.05.09 11:00:00 2004.05.09 11:17:0042.CHARTOROWID将字符数据类型转换为ROWID类型SQL> select rowid,rowidtochar(rowid),ename from scott.emp;ROWID ROWIDTOCHAR(ROWID) ENAME------------------ ------------------ ----------AAAAfKAACAAAAEqAAA AAAAfKAACAAAAEqAAA SMITH AAAAfKAACAAAAEqAAB AAAAfKAACAAAAEqAAB ALLEN AAAAfKAACAAAAEqAAC AAAAfKAACAAAAEqAAC WARD AAAAfKAACAAAAEqAAD AAAAfKAACAAAAEqAAD JONES43.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,VSIZE ISDBA 查看当前用户是否是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.ZHS16GBKLANG返回当前环境的语言的缩写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 SYSTEM60.AVG(DISTINCT|ALL)all表示对所有的值求平均值,distinct只对不同的值求平均值SQLWKS> create table table3(xm varchar(8),sal number(7,2));语句已处理。