oracle函数
ORACLE_分析函数大全
ORACLE_分析函数大全Oracle分析函数是一种高级SQL函数,它可以在查询中实现一系列复杂的分析操作。
这些函数可以帮助我们在数据库中执行各种数据分析和报表生成任务。
本文将介绍Oracle数据库中的一些常用分析函数。
1.ROW_NUMBER函数:该函数为查询结果中的每一行分配一个唯一的数字。
可以用它对结果进行排序或分组。
例如,可以使用ROW_NUMBER函数在结果集中为每个员工计算唯一的编号。
2.RANK和DENSE_RANK函数:这两个函数用于计算结果集中每个行的排名。
RANK函数返回相同值的行具有相同的排名,并且下一个排名值将被跳过。
DENSE_RANK函数类似,但是下一个排名值不会被跳过。
G和LEAD函数:LAG函数返回结果集中指定列的前一个(上一个)行的值,而LEAD函数返回后一个(下一个)行的值。
这些函数通常用于计算增长率或发现趋势。
4.FIRST和LAST函数:这两个函数用于返回结果集中分组的第一个和最后一个行的值。
可以与GROUPBY子句一起使用。
5.CUME_DIST函数:该函数用于计算给定值的累积分布。
它返回值的累积分布在结果集中的位置(百分比)。
6.PERCENT_RANK函数:该函数用于计算结果集中每个行的百分位数排名。
它返回值的百分位数排名(0到1之间的小数)。
7. NTILE函数:该函数用于将结果集分成指定数量的桶(Bucket),并为每个行分配一个桶号。
通常用于将数据分组为更小的块。
8.LISTAGG函数:该函数将指定列的值连接成一个字符串,并使用指定的分隔符分隔每个值。
可以用它将多个值合并在一起形成一个字符串。
9.AVG、SUM、COUNT和MAX/MIN函数:这些是常见的聚合函数,可以在分析函数中使用。
它们用于计算结果集中的平均值、总和、计数和最大/最小值。
以上只是Oracle数据库中的一些常用分析函数。
还有其他一些分析函数,如PERCENTILE_CONT、PERCENTILE_DISC等可以用于更高级的分析计算。
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中函数MONTHS_BETWEEN的使用
ORACLE中函数MONTHS_BETWEEN的使用MONTHS_BETWEEN函数是ORACLE数据库中的一个日期函数,主要用于计算两个日期之间的月份差。
语法:MONTHS_BETWEEN(date1, date2)参数说明:date1: 要计算的起始日期date2: 要计算的结束日期返回值类型:NUMBER类型,表示两个日期之间的月份差。
使用MONTHS_BETWEEN函数,可以进行如下操作:1.计算两个日期之间的月份差:可以使用MONTHS_BETWEEN函数计算两个日期之间的精确月份差。
例如,假设现在的日期是2024-01-15,要计算到期日为2024-06-30的合同还有多少个月到期,可以使用以下SQL语句:SELECTMONTHS_BETWEEN('2024-06-30','2024-01-15')ASMONTHS_DIFFFROMDUAL;2.计算日期与当前日期之间的月份差:在实际的开发中,常常需要计算日期与当前日期之间的月份差。
可以使用SYSDATE函数获取当前日期,然后将其作为参数传递给MONTHS_BETWEEN函数计算月份差。
例如,要计算一个人的生日与当前日期之间的月份差,可以使用以下SQL语句:SELECTMONTHS_BETWEEN(SYSDATE,'1990-01-01')ASMONTHS_DIFFFROMDUAL;3.负数表示起始日期在结束日期之后:如果起始日期在结束日期之后,MONTHS_BETWEEN函数的返回值为负数。
例如,计算2024-06-30与2024-01-15之间的月份差,可以使用以下SQL语句:SELECTMONTHS_BETWEEN('2024-01-15','2024-06-30')ASMONTHS_DIFFFROMDUAL;4.特殊日期的处理:由于不同月份的天数不一样,所以MONTHS_BETWEEN函数在计算相差月份时会考虑天数的影响。
oracle 获取字段长度的函数
在Oracle数据库中,我们经常会遇到需要获取字段长度的需求。
在实际的数据库开发中,有时候需要对字段的长度进行验证、限制或者计算。
而在Oracle数据库中,我们可以借助一些内置函数来轻松地获取字段的长度信息。
本文将介绍一些常用的Oracle函数,用于获取字段长度的相关信息。
1. LENGTH函数LENGTH函数是Oracle中用于获取字符串长度的函数。
它的用法非常简单,只需要在函数的括号中传入要计算长度的字符串即可。
例如:```sqlSELECT LENGTH('Hello') FROM dual;```以上SQL语句将返回字符串'Hello'的长度,结果为5。
2. CHAR_LENGTH函数CHAR_LENGTH函数与LENGTH函数类似,也是用于获取字符串长度的函数。
不过它主要用于计算多字节字符的长度,对于单字节字符,与LENGTH函数的结果相同。
例如:```sqlSELECT CHAR_LENGTH('你好') FROM dual;```以上SQL语句将返回字符串'你好'的长度,结果为2。
3. 字段长度限制在数据库设计中,有时候需要对字段的长度进行限制。
这时可以通过数据库约束来实现。
使用CREATE TABLE或ALTER TABLE语句可以为字段添加长度约束,例如:```sqlCREATE TABLE users (username VARCHAR2(20));```以上SQL语句创建了一个名为users的表,其中的username字段长度被限制为20个字符。
4. 字段长度验证在数据库应用开发中,经常需要对用户输入的数据进行长度验证。
可以通过在应用程序中调用LENGTH函数来验证字段的长度是否符合要求。
例如在PL/SQL中可以这样写:```sqlIF LENGTH(input_string) > 10 THEN-- 执行相应的逻辑END IF;```以上代码会验证input_string的长度是否大于10,如果满足条件则执行相应的逻辑。
oracle 常用字符串函数
Oracle常用字符串函数详解字符串是在任何编程语言中都必不可少的数据类型之一。
Oracle数据库提供了一系列的字符串函数来处理和操作字符串数据。
本文将介绍Oracle常用的字符串函数,并详细解释它们的定义、用途和工作方式。
以下是我们将要讨论的函数:1.LENGTH2.SUBSTR3.INSTR4.CONCAT5.UPPER6.LOWER7.TRIM8.REPLACE9.TRANSLATE10.LPAD11.RPAD12.LTRIM13.RTRIM14.SOUNDEX1. LENGTHLENGTH函数用于获取字符串的长度,返回字符串中字符的个数。
它的语法如下:LENGTH(string)string参数是要获取长度的字符串。
返回值是一个整数,代表字符串的长度。
例如:SELECT LENGTH('Hello, World!') FROM dual;运行上述SQL语句后,将返回结果15,因为字符串中有15个字符。
2. SUBSTRSUBSTR函数用于提取字符串的子串。
它的语法如下:SUBSTR(string, start_position, [length])string参数是要提取子串的字符串,start_position参数是子串在字符串中的起始位置(起始位置从1开始),length参数是要提取的子串的长度。
如果省略length 参数,则将提取从start_position到字符串结尾的子串。
例如:SELECT SUBSTR('Hello, World!', 8) FROM dual;运行上述SQL语句后,将返回结果”World!“,因为从字符串的第8个字符开始提取子串。
3. INSTRINSTR函数用于查找子串在字符串中第一次出现的位置。
它的语法如下:INSTR(string, substring, [start_position, [occurrence]])string参数是要查找的字符串,substring参数是要定位的子串,start_position参数是在字符串中开始搜索的位置,默认为1,occurrence参数是要定位的子串在字符串中的第几次出现,默认为1。
oracle function 写法
Oracle函数是用于返回单个值的子程序。
在创建函数之前,必须先定义一些参数,这些参数是IN(输入)参数,它们将值传递给子程序。
可以指定OUT(输出)参数,它向调用方返回一个值。
还可以指定IN OUT(输入/输出)参数,它将初始值传递给子程序,并将更新后的值返回给调用者。
下面是Oracle函数的基本语法:sqlCREATE [OR REPLACE] FUNCTION function_name [ (parameter [, parameter]) ]RETURN return_datatype IS | AS [declaration_section]BEGIN executable_section [EXCEPTION exception_section] END [function_name];其中:CREATE [OR REPLACE] FUNCTION:用于创建函数。
如果使用OR REPLACE关键字,则可以替换同名的现有函数。
function_name:函数的名称。
parameter:函数的参数。
可以指定多个参数,用逗号分隔。
参数可以是IN、OUT或IN OUT 类型。
return_datatype:函数返回的数据类型。
IS | AS:用于声明函数主体。
IS用于定义函数体,AS用于指定游标。
declaration_section:用于声明变量、常量、类型等。
executable_section:用于执行函数逻辑的代码块。
EXCEPTION:用于处理异常情况。
可以指定多个异常处理程序,每个异常处理程序都以exception_section为结尾。
function_name:函数的名称,可选的结尾符号。
以下是一个创建Oracle函数的示例:sqlCREATE OR REPLACE FUNCTION adder(n1 IN NUMBER, n2 IN NUMBER) RETURN NUMBER ISn3 NUMBER(8);BEGINn3 := n1 + n2;RETURN n3;END adder;这个示例创建了一个名为"adder"的函数,它接受两个IN参数n1和n2,并返回一个NUMBER 类型的值。
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(数据类型函数)
select lpad(ename,'10','*') from emp;
rpad //右侧填充 smith***** 10填充长度
select rpad(ename,'10','*') from emp;
trim //清除空格
round(314.1415,-2)结果 300
trunc()//截断
Select trunc(100.256,2) from dual; //结果 100.25
trunc(3.1415,3) 截断 3.141
ceil //向上取整
ceil(3.14)//结果 4 注意:ceilபைடு நூலகம்3.0)结果为3 返回不比3.14小的数据
//输出日期字段对应日后的第一个星期二
ROUND(x,y) //将日期x四舍五入到y指定日期单位(月或年)的第一天
select ename,hiredate,round(hiredate,'month') from emp;
//输出hiredate指定的月四舍五入的数据(如3月16就往前加一月等于4月1日,如3月15就不变还是3月1日)
//格式化输出数字(9代表一位数字,没有就不显示,但对于小数点后的强制显示)
2)select to_char(sal, '$00,000.0000') from emp;
//0代表一位数字,没有显示为0
3)select to_char(sal, 'L99,999.9999') from emp; //L代表本地货币
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 方差函数
oracle 方差函数Oracle方差函数是一种用于计算数据集的离散程度的函数。
它可以帮助我们了解数据的分散程度,从而更好地理解数据的分布特征。
在本文中,我们将深入探讨Oracle方差函数的定义、用法和相关注意事项。
让我们来了解一下Oracle方差函数的定义。
方差是一种衡量数据集离散程度的统计指标,表示数据与其平均值之间的差异程度。
方差越大,数据的分散程度就越大;方差越小,数据的分散程度就越小。
Oracle方差函数可以通过计算每个数据点与平均值之差的平方和来获得。
使用Oracle方差函数可以帮助我们回答许多与数据集分布相关的问题。
例如,我们可以使用方差函数来比较两个数据集的离散程度,从而判断它们是否具有相似的分布特征。
此外,方差函数还可以用于检测数据集中是否存在异常值。
如果某个数据点的方差远大于其他数据点,那么它很有可能是一个异常值。
在实际应用中,我们可以使用Oracle方差函数来分析各种类型的数据集。
无论是数值型数据还是分类数据,方差函数都可以提供有关数据分布的重要信息。
例如,在金融领域,我们可以使用方差函数来评估不同投资组合的风险水平。
在医学领域,方差函数可以帮助我们研究不同人群的生理特征分布。
在使用Oracle方差函数时,我们需要注意以下几点。
首先,方差函数对异常值比较敏感。
如果数据集中存在异常值,那么方差的计算结果可能会被扭曲。
因此,在使用方差函数之前,我们应该先检查数据集,排除异常值的影响。
其次,方差函数只能提供数据分布的一部分信息。
如果我们想要全面了解数据的分布特征,还需要结合其他统计指标进行分析。
Oracle方差函数是一种用于计算数据集离散程度的重要函数。
它可以帮助我们了解数据的分布特征,从而更好地分析和解释数据。
在实际应用中,我们可以根据方差函数的计算结果,进行风险评估、异常检测和数据比较等工作。
然而,我们在使用方差函数时需要注意异常值的影响,并结合其他统计指标进行综合分析。
通过合理使用Oracle方差函数,我们可以更好地理解和应用数据,为实际问题提供有效的解决方案。
ORACLE_分析函数大全
ORACLE_分析函数大全1.SUM:计算指定列的总和。
用法:SUM(column) OVER (PARTITION BY expression ORDER BY expression)2.AVG:计算指定列的平均值。
用法:AVG(column) OVER (PARTITION BY expression ORDER BY expression)3.COUNT:计算指定列的记录数。
用法:COUNT(column) OVER (PARTITION BY expression ORDER BY expression)4.MAX:计算指定列的最大值。
用法:MAX(column) OVER (PARTITION BY expression ORDER BY expression)5.MIN:计算指定列的最小值。
用法:MIN(column) OVER (PARTITION BY expression ORDER BY expression)6.FIRST_VALUE:计算指定列的第一个值。
用法:FIRST_VALUE(column) OVER (PARTITION BY expression ORDER BY expression)ST_VALUE:计算指定列的最后一个值。
用法:LAST_VALUE(column) OVER (PARTITION BY expression ORDER BY expression)8.LEAD:返回指定行后的值。
用法:LEAD(column, offset, default) OVER (PARTITION BY expression ORDER BY expression)G:返回指定行前的值。
用法:LAG(column, offset, default) OVER (PARTITION BY expression ORDER BY expression)10.RANK:计算指定列的排名(相同值有相同的排名,相同排名后续排名跳过)。
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 几个特殊函数dump()、convert()、substrb()、lengthb()
一、DUMP()函数DUMP(w[,x[,y[,z]]])【功能】返回数据类型、字节长度和在内部的存储位置.【参数】w为各种类型的字符串(如字符型、数值型、日期型……)x为返回位置用什么方式表达,可为:8,10,16或17,分别表示:8/10/16进制和字符型,默认为10。
y和z决定了内部参数位置【返回】类型<[长度]>,符号/指数位[数字1,数字2,数字3,......,数字20]如:Typ=2 Len=7: 60,89,67,45,23,11,102SELECT DUMP('ABC',1016) FROM dual;返回结果为:Typ=96 Len=3 CharacterSet=ZHS16GBK: 41,42,43代码数据类型0 对应V ARCHAR21 对应NUMBER8 对应LONG12 对应DATE23 对应RAW24 对应LONG RAW69 对应ROWID96 对应CHAR106 对应MSSLABEL各位的含义如下:1.类型: Number型,Type=2 (类型代码可以从Oracle的文档上查到)2.长度:指存储的字节数3.符号/指数位在存储上,Oracle对正数和负数分别进行存储转换:正数:加1存储(为了避免Null)负数:被101减,如果总长度小于21个字节,最后加一个102(是为了排序的需要)指数位换算:正数:指数=符号/指数位- 193 (最高位为1是代表正数)负数:指数=62 - 第一字节4.从<数字1>开始是有效的数据位从<数字1>开始是最高有效位,所存储的数值计算方法为:将下面计算的结果加起来:每个<数字位>乘以100^(指数-N) (N是有效位数的顺序位,第一个有效位的N=0)5、举例说明SQL> select dump(123456.789) from dual;返回:Typ=2 Len=6: 195,13,35,57,79,91<指数>: 195 - 193 = 2<数字1> 13 - 1 = 12 *100^(2-0) 120000<数字2> 35 - 1 = 34 *100^(2-1) 3400<数字3> 57 - 1 = 56 *100^(2-2) 56<数字4> 79 - 1 = 78 *100^(2-3) .78<数字5> 91 - 1 = 90 *100^(2-4) .009123456.789SQL> select dump(-123456.789) from dual;返回:Typ=2 Len=7: 60,89,67,45,23,11,102算法:<指数> 62 - 60 = 2(最高位是0,代表为负数)<数字1> 101 - 89 = 12 *100^(2-0) 120000<数字2> 101 - 67 = 34 *100^(2-1) 3400<数字3> 101 - 45 = 56 *100^(2-2) 56<数字4> 101 - 23 = 78 *100^(2-3) .78<数字5> 101 - 11 = 90 *100^(2-4) .009123456.789(-)现在再考虑一下为什么在最后加102是为了排序的需要,-123456.789在数据库中实际存储为60,89,67,45,23,11而-123456.78901在数据库中实际存储为60,89,67,45,23,11,91可见,如果不在最后加上102,在排序时会出现-123456.789<-123456.78901的情况。
oracle的greatest函数
Oracle是世界领先的数据库管理系统供应商之一,其提供了丰富的数据库操作函数,其中包括了greatest函数。
本文将详细介绍greatest 函数的用法、功能特点以及在实际项目中的应用场景。
一、greatest函数的概念1.1、概念说明greatest函数是Oracle数据库中的一个常用函数,它的作用是从给定的表达式列表中选择最大的值。
该函数可以接受任意数量的表达式作为参数,并返回表达式列表中最大的值。
如果列表中有多个最大值,greatest函数将返回第一个最大值。
1.2、语法结构greatest函数的基本语法结构如下:greatest(expr1, expr2, …, exprn)其中,expr1、expr2等表示要比较的表达式,n表示参数个数。
1.3、返回值类型greatest函数的返回值类型取决于传入参数的类型。
如果参数都是数字类型,则返回值为数字;如果参数包含非数值类型,则将根据隐式转换规则进行类型转换。
二、greatest函数的使用示例2.1、数字类型参数示例下面是一个使用greatest函数的简单示例,假设有一个包含员工工资信息的表Emp_Salary,我们需要从中找出工资最高的员工:SELECT EMP_NAME, greatest(SALARY1, SALARY2, SALARY3) AS MAX_SALARYFROM EMP_SALARY;2.2、日期类型参数示例greatest函数也可以用于比较日期类型的参数,以便找出最晚的日期。
在一个订单表Order_Info中,我们需要找到最近的订单日期:SELECT ORDER_ID, greatest(ORDER_DATE, PAY_DATE, DELIVERY_DATE) AS LATEST_DATEFROM ORDER_INFO;2.3、字符串类型参数示例除了比较数字和日期,greatest函数还可以用于比较字符串类型的参数。
假设有一个包含学生成绩信息的表Student_Score,我们需要找到最高的分数及对应的学生尊称:SELECT STUDENT_NAME, greatest(CHINESE_SCORE,MATH_SCORE, ENGLISH_SCORE) AS MAX_SCOREFROM STUDENT_SCORE;三、greatest函数的应用场景3.1、在查询报表中比较多个字段的值,从中选择最大值或者最晚日期等;3.2、在处理业务数据时,找出成绩最高的学生或者工资最高的员工;3.3、在数据清洗和处理过程中,进行多字段比较并筛选出需要的数据。
Oracle函数介绍8234
返回一个逐字拼写的年份数值。加S对于公元前的年份前缀一 个负号(-)
返回年份数字,从1位到此4位。使用YYYY将得到全部4位年 份数字,而使用YY仅仅得到最后的两位,如此等等。负号 (-)被加到S前表示公元前的年份
日期格式元素
WinnerSoft
一般地,日期格式说明符是不太敏感的。然而,当为 了显示而说明日期格式、对于文本数据中的说明符等 情况下,它就变得比较务实、具体了。以月份的名字 为例,通过下面引用的结果解释一下该情况的效果:
Q
Q
RM
RM
TO_DATE?
X X
X X X X X X
WinnerSoft
说明 返回年值 返回一时代的缩写名称。该说明符仅用于有历法支持的时代, 例如,日本的天皇历法等 返回一时代的全名 返回小时数值(1-12) 返回小时数值(1-12) 返回小时数值(0-23) 返回一年中由ISO标准定义的星期数值
SQL内置函数
WinnerSoft
• BFILENAME
BFILENAME函数返回一指向磁盘的物理文件的BFILE 地址。
其语法格式如下:
BFILENAME(directory,filename)
其中:
directory 一个包括指定文件的目录路径字符串。 该目录通过命令CREATE DIRECTORY产生。 但它不是一个操作系统目录
标定格式化数字前面美元符号的位置 标定当前字符(由参数NLS_ISO_CURRENCY说明)的位置,这是个 对语言编程有限定作用的数值
标定由参数NLS_CURRENCY说明的当前字符的位置 标定由参数NLS_UNION_CURRENCY说明的联合体当前的字符的位 置
oracle字段相减函数
oracle字段相减函数摘要:1.引言2.Oracle 字段相减函数的概念3.Oracle 字段相减函数的使用方法4.Oracle 字段相减函数的实例演示5.总结正文:1.引言在Oracle 数据库中,字段相减函数是一种常见的数据处理操作。
通过使用字段相减函数,可以实现对表中两个字段的差值计算,为数据分析和报表生成提供便利。
本文将详细介绍Oracle 字段相减函数的概念、使用方法及实例演示。
2.Oracle 字段相减函数的概念Oracle 字段相减函数,实际上是一个自定义函数(UDF, User-Defined Function)。
它允许用户在SQL 查询中直接对两个字段进行相减操作,并将结果返回给客户端。
字段相减函数可以提高查询效率,避免在客户端进行复杂的计算。
3.Oracle 字段相减函数的使用方法在Oracle 数据库中,创建字段相减函数的语法如下:```CREATE OR REPLACE FUNCTION field_subtraction (p_field1 IN TYPE_OF_FIELD1, p_field2 IN TYPE_OF_FIELD2)RETURN TYPE_OF_RESULTISv_result TYPE_OF_RESULT;BEGINv_result := p_field1 - p_field2;RETURN v_result;END;/```其中,`p_field1`和`p_field2`分别为需要相减的两个字段,`TYPE_OF_FIELD1`和`TYPE_OF_FIELD2`分别为字段的数据类型,`TYPE_OF_RESULT`为返回结果的数据类型。
在创建好字段相减函数后,可以在SQL 查询中直接调用该函数,如:```SELECT field1, field2, field_subtraction(field1, field2) as field_diff FROM your_table;```4.Oracle 字段相减函数的实例演示假设有一个名为`employees`的表,包含以下字段:`id`(员工ID,整数类型),`salary`(员工薪资,整数类型)和`bonus`(员工奖金,整数类型)。
ORACLE 内置函数大全
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));语句已处理。
oracle的数组函数 -回复
oracle的数组函数-回复Oracle的数组函数Oracle数据库是一种关系型数据库管理系统,它支持各种数据结构和数据类型,并提供了许多内置的函数和特性来处理和操作数据。
其中,数组函数是一类非常实用的函数,它们可以帮助我们对数组数据进行处理和分析。
本文将以Oracle的数组函数为主题,分步介绍这些函数的使用和应用。
1. 定义数组数据类型在Oracle中,我们可以使用表类型来定义数组数据类型。
表类型是一种定义数据结构的对象,它由一个或多个列组成,并且可以使用在PL/SQL 块中声明变量。
我们可以使用以下语法定义一个表类型:sqlCREATE TYPE array_type AS TABLE OF datatype;其中,array_type是数组类型的名称,datatype是数组中元素的数据类型,可以是任何合法的数据类型,如整数、字符串、日期等。
2. 声明和初始化数组变量在使用数组函数之前,我们需要先声明并初始化相应的数组变量。
我们可以使用如下语法来声明数组变量:sqlDECLAREvariable_name array_type;BEGINvariable_name := array_type();END;其中,variable_name是数组变量的名称,array_type是定义的数组类型,后面的空括号表示数组为空。
我们还可以使用如下语法来声明并初始化一个非空的数组变量:sqlDECLAREvariable_name array_type := array_type(value1, value2,value3, ...);BEGIN在这里可以使用数组变量END;其中,value1、value2、value3等是数组的初始值。
3. 访问数组元素在Oracle中,我们可以使用下标来访问和操作数组元素。
数组的下标从1开始,以数组中元素的位置来标识。
我们使用下标来访问和操作数组元素的语法如下:sqlvariable_name(index);其中,variable_name是数组变量的名称,index是数组元素的位置。
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还提供了一些用于合并和分割数组的函数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
3
1
2
3
数字函数
ROUND: 四舍五入
ROUND(45.926, 2) 45.93
TRUNC:
截断
TRUNC(45.926, 2) 45.92
MOD: 求余
MOD(1600, 300) 100
数字函数
ROUND 函数
按照指定的精度进行舍入
1
2
SELECT ROUND(45.923,2), ROUND(45.923,0), ROUND(45.923,-1) FROM DUAL;
日期函数
函数 MONTHS_BETWEEN ADD_MONTHS NEXT_DAY 描述 两个日期相差的月数 向指定日期中加上若干月数 指定日期的下一个日期 第二个参数与中文编码有关
LAST_DAY ROUND
TRUNC
本月的最后一天 日期四舍五入
_BETWEEN ('01-SEP-95','11-JAN-94')
1 SELECT last_name, salary, NVL(commission_pct, 0), (salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SAL FROM employees;
2
使用 NVL2 函数
1 SELECT last_name, salary, commission_pct, NVL2(commission_pct, 2 'SAL+COMM', 'SAL') income FROM employees WHERE department_id IN (50, 80);
SELECT last_name, hire_date FROM employees WHERE last_name like 'G%';
日期的数学运算
在日期上加上或减去一个数字结果仍为日期。 两个日期相减返回日期之间相差的天数。 可以用数字除24来向日期中加上或减去小时。
SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKS FROM employees WHERE department_id = 90;
TO_NUMBER 和 TO_DATE 函数
使用 TO_NUMBER 函数将字符转换成数字:
TO_NUMBER(char[, 'format_model'])
使用 TO_DATE 函数将字符转换成日期:
TO_DATE(char[, 'format_model'])
这些函数可以使用 fx 修饰符。
字符函数
大小写控制函数
这类函数改变字符的大小写。
函数 结果
LOWER('SQL Course')
UPPER('SQL Course')
SQL COURSE
SQL COURSE
INITCAP('SQL Course') Sql Course
SELECT employee_id, last_name, department_id FROM employees WHERE last_name = 'higgins'; no rows selected SELECT employee_id, last_name, department_id FROM employees WHERE LOWER(last_name) = 'higgins';
• ADD_MONTHS ('11-JAN-94',6)
19.6774194 '11-JUL-94'
• NEXT_DAY ('01-SEP-95','FRIDAY') '08-SEP-95' • LAST_DAY('01-FEB-95') '28-FEB-95'
转换函数
数据类型转换
隐式转换
显性转换
格式: 必须包含在单引号中而且大小写敏感。 可以包含任意的有效的日期格式。 可以使用 fm 去掉多余的空格或者前导零。
与日期指用逗号隔开。
日期格式的元素
YYYY YEAR MM MONTH MON DY DAY
2004 TWO THOUSAND AND FOUR 02 JULY JUL MON MONDAY
字符函数
1
SELECT employee_id, CONCAT(first_name, last_name) NAME, job_id, LENGTH (last_name), INSTR(last_name, 'a') "Contains 'a'?" FROM employees WHERE SUBSTR(job_id, 4) = 'REP';
…
TO_CHAR函数对数字的转换
TO_CHAR(number, 'format_model')
下面是在TO_CHAR 函数中经常使用的几种格式:
9
0
数字
零
$
L . ,
美元符
本地货币符号 小数点 千位符
TO_CHAR函数对数字的转换
SELECT TO_CHAR(salary, '$99,999.00') SALARY FROM employees WHERE last_name = 'Ernst';
…
条件表达式
在 SQL 语句中使用IF-THEN-ELSE 逻辑。 使用两种方法:
CASE 表达式 DECODE 函数
CASE 表达式
在需要使用 IF-THEN-ELSE 逻辑时:
CASE expr WHEN [WHEN WHEN ELSE END
RR 日期格式
当前年 1995 1995 2001 2001
日期 27-OCT-95 27-OCT-17 27-OCT-17 27-OCT-95
RR 格式 1995 2017 2017 1995
YY 格式 1995 1917 2017 2095
指定的年份:
0–49 当前的年份: 0–49 The return date is in the current century The return date is in the century after the current one 50–99
50–99
The return date is in the century before the current one The return date is in the current century
RR 日期格式
使用RR日期格式查找雇佣日期在1990年之前的员工, 在1999或现在使用下面的命令会产生相同的结果:
DD
02
日期格式的元素
时间格式
HH24:MI:SS AM DD "of" MONTH 15:45:32 PM 12 of OCTOBER
使用双引号向日期中添加字符 日期在月份中的位置
ddspth fourteenth
TO_CHAR函数对日期的转换
SELECT last_name, TO_CHAR(hire_date, 'fmDD Month YYYY') AS HIREDATE FROM employees;
1
2
使用 NULLIF 函数
1
SELECT first_name, LENGTH(first_name) "expr1", 2 last_name, LENGTH(last_name) "expr2", NULLIF(LENGTH(first_name), LENGTH(last_name)) result FROM employees;
ORACLE函数
回顾
多表查询
交叉连接、内连接、外连接;
子查询 聚合函数及分组统计 伪表及oracle常用函数
sysdate / to_date() / to_char() ; decode() ;nvl() ;sysdate;lpad();
本章目标
3
… 1 2 3
使用 COALESCE 函数
COALESCE 与 NVL 相比的优点在于 COALESCE 可以同时处理交替的多个值。 如果第一个表达式非空,则返回这个表达式,对其 他的参数进行COALESCE 。
使用 COALESCE 函数
SELECT
last_name, COALESCE(commission_pct, salary, 10) comm FROM employees ORDER BY commission_pct;
字符函数
字符控制函数
这类函数控制字符数据,如截取等。
函数 CONCAT('Hello', 'World') SUBSTR('HelloWorld',1,5) LENGTH('HelloWorld') INSTR('HelloWorld', 'W') LPAD(salary,10,'*') RPAD(salary, 10, '*') TRIM('H' FROM 'HelloWorld') 结果 HelloWorld Hello 10 6 *****24000 24000***** elloWorld
隐式数据类型转换
Oracle 自动完成下列转换: