Oracle_SQL_function

上传人:sx****84 文档编号:243016452 上传时间:2024-09-13 格式:PPT 页数:76 大小:189KB
返回 下载 相关 举报
Oracle_SQL_function_第1页
第1页 / 共76页
Oracle_SQL_function_第2页
第2页 / 共76页
Oracle_SQL_function_第3页
第3页 / 共76页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,SQL内置函数说明,Oracle 8i数据库管理,WinnerSoft,1,数字格式元素,Oracle 8i数据库管理,WinnerSoft,元素,示例,说明,,,999,999,标定格式化数字中的位置,G,999G999,返回一组通过参数NLS_NUMERIC_CHARACTER设定的分隔符,这是个对语言编程有限定作用的数值,.,9.99,标定格式化数字中的小数点位置,D,9D99,标定小数点(由参数NLS_NUMERIC_CHARACTER说明)的位置,这是对语言编程有限定作用的数值,$,$999 999.99,标定格式化数字前面美元符号的位置,C,C999,999.99,标定当前字符(由参数NLS_ISO_CURRENCY说明)的位置,这是个对语言编程有限定作用的数值,L,L999,999.99,标定由参数NLS_CURRENCY说明的当前字符的位置,U,U999,999.99,标定由参数NLS_UNION_CURRENCY说明的联合体当前的字符的位置,0,0999,标定格式化数字中试图显示前置零的位置,9,9.99,标定数字的位置。如果在数字格式中没有符号说明,正数的前面将用一个空格代替对应负数的负号,EEEE,999.9EEEE,得到一个由说明符定义的格式数据,FM,Fm9.99,格式化一个没有前置空格和尾随空格的数据,MI,999,999MI,格式化一个有尾随符号的负数及尾随一空格的正数,2,数字格式元素,Oracle 8i数据库管理,WinnerSoft,PR,999pr,格式化中的负数,RN,RN,将数据的格式定义为大写罗马数字,M,m,将数据的格式定义为小写罗马数字,S,S999,999,999,999s,将数据格式定义成:负数前面负号(-),正数前面置正号(+)将符号置于数值后面,符号变成尾随符号,TM,TM9,TME,以最少的字符数为数值格式。其中,TM9时固定的注记方式,但TME则需使用具体的说明。如果,在一超过64个字符的字符串中使用了TM9,那么,说明的形式可以是任意的,X,XXXX,Xxxx,返回16进制数。该16进制数字符(A-F)符合格式说明串的要求。使用X返回大写的16进制数字(A-F),使用x返回小写的16进制数值(a-f),V,999v999,乘以10的x次方,其中,x是字符v后面字符9的个数,元素,示例,说明,3,日期格式元素,Oracle 8i数据库管理,WinnerSoft,4,日期格式元素,Oracle 8i数据库管理,WinnerSoft,元素,示例,TO_DATE?,说明,5,日期格式元素,Oracle 8i数据库管理,WinnerSoft,6,日期格式元素,一般地,日期格式说明符是不太敏感的。然而,当为了显示而说明日期格式、对于文本数据中的说明符等情况下,它就变得比较务实、具体了。以月份的名字为例,通过下面引用的结果解释一下该情况的效果:,TO_CHAR(SYSDATE,MONTH)=NOVEMBER,TO_CHAR(SYSDATE,Month)=November,TO_CHAR(SYSDATE,month)=november,当你键入的单词MONTH(月份)是大写字母时,月份名字的结果就全部说明为大写。否则,如果串说明时的首字母是大写,则返回的月份名首字母也是大写字母。同样的规则也适用于下面的格式说明符:AD、AM、PM、BC、DAY、DY、MON、RM和YEAR,Oracle 8i数据库管理,WinnerSoft,7,SQL内置函数,ABS,ABS函数返回一数值的绝对值。负数将舍去其负号。下面是它的语法格式:,ABS(number),其中,number是希望得到其绝对值的数值,ABS函数截去数值的符号。如下例所示:,ABS(5)=5,ABS(5)=5,不管是5还是-5,其绝对值均为5。,Oracle 8i数据库管理,WinnerSoft,8,SQL内置函数,ACOS,ACOS函数返回一数值的反余弦值。结果以弧度表示,且在0到PI之间。,其语法格式如下:,ACOS(number),其中,number必须是-1与1之间的值,下面的例子显示了1和-1 的反余弦值:,ACOS(1)=0,ACOS(-1)=3.1415927(PI),Oracle 8i数据库管理,WinnerSoft,9,SQL内置函数,ADD_MONTHS,ADD_MONTHS函数将一个日期上加上一指定的月份数,所以,日期中的日将是不变的。然而,如果开始日期是某月的最后一天,那么,结果将会调整以使返回值仍对应新的一月的最后一天。如果,结果月份的天数比开始月份的天数少,那么,也会向回调整以适应有效日期。其语法格式如下:,ADD_MONTHS(date,months),其中:,date一个日期数值,months要加上的月份数。要减去的月份数用负数,下面的例子解释了该函数的使用:,ADD_MONTHS(TO_DATE(15-Nov-1961,d-mon-yyyy),1)=15-Dec-1961,ADD_MONTHS(TO_DATE(30-Nov-1961,d-mon-yyyy),1)=31-Dec-1961,ADD_MONTHS(TO_DATE(31-Jan-1999,d-mon-yyyy),1)=28-Feb-1999,注意,在上面的第三个例子中,函数将不得不将31日往回调整为28日,已使结果对应新一月的最后一天。因为,1999年的2月份只有28天。在第二个例子中,则是从30往后调整为31,也同样是为了保持对应的最后一天。,Oracle 8i数据库管理,WinnerSoft,10,SQL内置函数,ASCII,ASCII函数返回你指向的字符串首字母的十进制表示代表码值。该返回值或许是ASCII码值,也或许不是。如果用户的数据库字符集是7位的ASCII值,那就得到一ASCII码值。该返回值总是以用户使用的字符集为基础的。,ASCII(string),其中:string一个字符串。更多的时候就是一字符,下面的例子解释了该函数的使用:,ASCII(j)=74,ASCII(jeff)=74,从上面的第二个例子,我们不难看出,如果指定了一个多字符串,该函数将忽略除首字母外的所有字符。,Oracle 8i数据库管理,WinnerSoft,11,SQL内置函数,ASIN,ASIN函数返回一数值的反正弦值。结果以弧度表示,且在-PI/2到PI/2之间。,其语法格式如下:,ASIN(number),其中:number必须是-1与1之间的值,下面的例子显示了1和-1的反正弦值:,ASIN(1)=1.57,ASIN(-1)=-1.57,Oracle 8i数据库管理,WinnerSoft,12,SQL内置函数,ATAN,ATAN函数返回一数值的反正切值。结果以弧度表示,且在-PI/2到PI/2之间。,其语法格式如下:,ATAN(number),其中:number必须是-1与1之间的值,下面的例子显示了1和-1 的反正切值:,ATAN(1)=0.7854,ATAN(-1)=-0.7854,Oracle 8i数据库管理,WinnerSoft,13,SQL内置函数,ATAN2,ATAN2函数返回两个数值的反正切值。结果以弧度表示。,其语法格式如下:,ATAN2(first,second),其中:,first第一个数,second第二个数,函数ATAN2(first,second)与函数TAN(first/second)的功能是相同的。,下面的例子显示了1和-1的反正切值:,ATAN2(1,.5)=1.107,TAN(1/.5)=1.107,Oracle 8i数据库管理,WinnerSoft,14,SQL内置函数,B,B函数返回一指向磁盘的物理文件的BFILE地址。,其语法格式如下:,B(directory,),其中:,directory 一个包括指定文件的目录路径字符串。 该目录通过命令CREATE DIRECTORY产生。 但它不是一个操作系统目录,指定目录中用户试图指定的文件名字。 该文件可以是预先不存在的文件,下面的例子解释了B函数的使用情况:,B(gif_dir,book_photo.gif),Oracle 8i数据库管理,WinnerSoft,15,SQL内置函数,CEIL,CEIL函数根据输入值返回一个数值。输入参数可以是非整数值,但返回结果则是大于等于输入参数的最小整数。,其语法格式如下:,CEIL(number),其中:,number任意数值,十进制数,下面的例子解释了CEIL函数的使用情况:,CEIL(5.1)=6,CEIL(-5.1)=-5,应注意,对于负数使用该函数的结果。大于等于-5。1的最小整数精确地讲应该是-5。这是数学上的情况,但首先也是记数中知觉上的感觉。,Oracle 8i数据库管理,WinnerSoft,16,SQL内置函数,CHARTOROWID,CHARTOROWID函数将一个字符串转换成rowid类型。,其语法格式如下:,CHARTOROWID(string),其中:,string待处理的字符串。该字符串应该能表示一个有效的rowid型数据,下面的例子解释了CHARTOROWID函数的使用情况:,SQLSELECT ROWID FORM dual;,ROWID,-,AAAADCAABAAAAVUAAA,SQLSELECT * FORM dual,2 WHERE ROWID=CHARTOROWID(AAAADCAABAAAAVUAAA);,D,-,X,Oracle 8i数据库管理,WinnerSoft,17,SQL内置函数,CHR,CHR函数就相应的数据库字符集,返回一个指定数值相应的字符。例如,给定一个ASCII值,使用CHR函数返回该数值表示的字符。,其语法格式如下:,CHR(integerUSING NCHAR_CS),其中:,integer在相应的字符集中,代表对应字符的整数类型,USING NCHAR_CS指明相应的字符集,下面的例子解释了CHR函数的使用情况:,CHR(10)=a tab character,CHR(65)=A,这些例子假设基于ASCII字符集,Oracle 8i数据库管理,WinnerSoft,18,SQL内置函数,CONCAT,CONCAT函数将两个输入字符串,组合成一个,并返回结果。,其语法格式如下:,CONCAT(string_1,string_2),其中:,string_1第一个字符串,string_2第二个字符串。该字符串将被拼接在第一个字符串的尾部,下面的例子解释了CONCAT函数的使用情况:,CONCAT(This is,a test)=This is a test,Oracle 8i数据库管理,WinnerSoft,19,SQL内置函数,CONVERT,CONVERT函数把一字符串从一个字符集转换到另一字符集。,其语法格式如下:,CONVERT(string,dest_char_set,source_char_set),其中:,string待转换的字符串,dest_char_set目标字符串,source_char_set源字符集。省略默认数据库字符集,下面的例子解释了CONVERT函数的使用情况:,CONVERT(Jonathan,WE8EBDIC37C,US7ASCII),CONVERT(Jonathan,WE8ROMAN8),第一个例子从US7ASCII字符集转换。第二个例子从默认数据库字符集转换。,Oracle 8i数据库管理,WinnerSoft,20,SQL内置函数,COS,COS函数返回一角度的余弦值。结果为弧度值。,其语法格式如下:,COS(angle),其中:,angle角度值,用弧度表示,下面的例子解释了COS函数的使用情况:,COS(90*3.14/180)=.000796,COS(0)=1,Oracle 8i数据库管理,WinnerSoft,21,SQL内置函数,COSH,COSH函数返回一角度的双曲余弦值。,其语法格式如下:,COSH(angle),其中:,angle角度值,以弧度表示,下面的例子解释了COSH函数的使用情况:,COSH(0)=1,COSH(90*3.14/180)=2.507,将角度值转化成弧度值,可以参考COS函数的有关部门信息,Oracle 8i数据库管理,WinnerSoft,22,SQL内置函数,DECODE(一),DECODE函数相当于一条件语句(IF).它将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式。当然,如果未能与任何一个实参序偶匹配成功,则函数也有默认的返回值。区别于SQL的其它函数,DECODE函数还能识别和操作空值。,其具体的语法格式如下:,DECODE(input_value,value,result,value,result,default_result);,其中:,input_value试图处理的数值。DECODE函数将该数值与一系列的序偶相比较,以决定最后的返回结果,value是一组成序偶的数值。如果输入数值与之匹配成功,则相应的结果将被返回。对应一个空的返回值,可以使用关键字NULL于之对应,result是一组成序偶的结果值,default_result未能与任何一序偶匹配成功时,函数返回的默认值,下面的例子说明了,人们如何读取用户CHECKUP表SEAPARK中的BLOOD_TEST_FLAG列下的项目,作为DECODE函数的实参支持值。,SELECT checkup_type,DECODE(blood_test_flag,Y,Yes,N,No,NULL,None,Invalid),FROM checkup;,Oracle 8i数据库管理,WinnerSoft,23,SQL内置函数,DECODE(二),这个SQL语句展示了DECODE函数的左右基础功能特征。函数的输入值时BLOOD_TEST_FLAG列的数据,如果该列的值是Y,那么,函数返回YES。如果该列的值是NULL,那么,函数返回None。如果没有与任何一个序偶匹配成功,则表示该列当前值无效,函数返回Invalid。,在SQL疑难问题中,DECODE函数常常发挥非常灵活的作用。其中的一个技术就是为了某种目的可以将一个表的行转换成列。例如:,SQLSELECT TO_CHAR(TRUNC(BIRTH_DATE,YEAR),YYYY),2COUNT(*),3FROM AQUATIC_ANIMAL,4WHERE TO_CHAR(TRUNC(BIRTH_DATE,YEAR),YYYY),5IN(1995,1996,1997),6GROUP BY TO_CHAR(TRUNC(BIRTH_DATE,YEAR),YYYY);,TO_C COUNT(*),- -,19951,19963,19971,Oracle 8i数据库管理,WinnerSoft,24,SQL内置函数,该例告诉我们,1995、1996和1997年各出生了多少动物。每一行显示不同的年。一旦希望将这些数值显示成3列,该如何处理?可以通过如表B-1所示的方法处理之。,Oracle 8i数据库管理,WinnerSoft,使用DECODE查询,SQLSELECT SUM(,DECODE(TO_CHAR(TRUNC(BIRTH_DATE,YEAR),YYYY),1995,1,0)BORN_1995,SUM(DECODE(TO_CHAR(TRUNC(BIRTH_DATE,YEAR),YYYY),1996,1,0)BORN_1996,SUM(DECODE(TO_CHAR(TRUNC(BIRTH_DATE,YEAR),YYYY),1997,1,0)BORN_1997,FROM AQUATIC_ANIMAL,WHERE TO_CHAR(TRUNC(BIRTH_DATE,YEAR),YYYY),IN(1995,1996,1997);,BORN_1995BORN_1996 BORN_1997,- - -,1 3 1,该例中,为了生成结果集合中的3列,BIRTH_DATE被引用了3 次。为了过滤出正确的返回年份,每次引用均引用了函数DECODE。例如,在第一列中,DECODE函数将所有的1995日期值转换成1,其他的均转换成0,再利用SUM函数求出其汇总值,从而达到求取在1995年诞生的动物数目。1996和1997年的情况类似。,25,SQL内置函数,EMPTY_BLOB,EMPTY_BLOB函数返回一空的BLOB指针,该指针可以用在INSERT或UPDATE命令中,以初始化BLOB列项。,其具体的语法格式如下:,EMPTY_BLOB(),该函数没有参数。下面的例子说明了如何使用该函数初始化BLOB列,并作为一个新行插入到表中。,INSERT INTO some_table,(blob_column),VALUE,(EMPTY_BLOB();,Oracle 8i数据库管理,WinnerSoft,26,SQL内置函数,EMPTY_CLOB,EMPTY_CLOB函数与EMPTY_BLOB函数的功能类似,只不过对应CLOB而已。它返回一空的CLOB指针,该指针可以用在INSERT或UPDATE命令中,以初始化CLOB列。,其具体的语法格式如下:,EMPTY_CLOB(),该函数没有参数。下面的例子说明了如何使用该函数初始化CLOB列,并作为一个新行插入到表中。,INSERT INTO some_table,(clob_column),VALUE(EMPTY_CLOB();,Oracle 8i数据库管理,WinnerSoft,27,SQL内置函数,EXP,EXP函数返回e的一个幂。在数学上e经常被用来表示一指定的特殊数值(一个十进制的无限数)2.178,它是数学的基础。其具体的语法格式如下:,EXP(exponent),其中:,exponent返回e的少次(exponent)幂,下面是该函数的使用情况:,EXP(1)=2.7182818,EXP(3)=20.085537(2.7182818*2.7182818*2.7182818),Oracle 8i数据库管理,WinnerSoft,28,SQL内置函数,FLOOR,FLOOR函数返回一个小于或等于给定十进制数的最大整数。该函数的工作机制与函数CEIL的情况极为相似,但却正好相反。,其具体的语法格式如下:,FLOOR(number),其中:,number任意数,包括十进制数,下面是该函数的使用情况:,FLOOR(5.1)=5,FLOOR(-5.1)=-6,为了理解函数FLOOR和函数CEIL在处理负数时的不同机制,可以比较函数FLOOR(5.1)和函数CEIL(-5.1)的执行结果。,Oracle 8i数据库管理,WinnerSoft,29,SQL内置函数,GREATEST,GREATEST函数返回一数值列表中的最高数值。可使用GREATEST函数处理数字数据和字符数据。,其具体的语法格式如下:,GREATEST(value,value,value,),其中:,value数字数据或文本数据。一般地,所有数值的类型应该一致。如果给定的数据类型相混,返回值将匹配第一个参数类型,其余的所有参数自然被转换成对应的类型,下面是该函数的使用情况:,GREATEST(1,3,9,45,93,2,-100)=93,GREATEST(Jenny,Jeff,Ashley)= Jenny,GREATEST(11,101)=11,第三个例子反映了参数类型相混时的函数处理情况。因为第一的数据类型是字符串,所以,Oracle将数字1转换成字符串1,以匹配对应的数据类型。虽然在数值上101大于11,但如果都转换成字符串,则结果正好相反。这种情况下,11大于101,并且,也是函数的返回结果。,Oracle 8i数据库管理,WinnerSoft,30,SQL内置函数,HEXTORAW,函数HEXTORAW将一个由十六进制字符组成的字符串转换成一个raw数值。,其具体的语法格式如下:,HEXTORAW(string),其中:,string十六进制字符组成的字符串数据,Oracle 8i数据库管理,WinnerSoft,函数,HEXTORAW应用情况举例,SQLCREATE TABLE xx (y raw(10);,Table created.,SQLINSERT INTO xx VALUES(HEXTORAW(414243);,1 row created.,AQLSELECT DUMP(y) FROM xx;,DUMP(Y),-,Typ=23 Len=3:65,66,67,注意:在调用函数时,raw项中的数值是精确表示的(十进制数65=十六进制数41),31,SQL内置函数,INITCAP,INITCAP函数接收一字符串,并转换该字符串中的所有单词,以使各单词均以大写字母开头。,其的语法格式如下:,INITCAP(string),其中:,string任意一VARCHAR2或CHAR型数据,下面是该函数的使用情况。,INITCAP(This is a test=This is a test,Oracle 8i数据库管理,WinnerSoft,32,SQL内置函数,INSTR,函数INSTR会告诉用户,其中的一个字符串(参数)是否在另一个字符串(也是参数)当中。,其具体的语法格式如下:,INSTR(string,substring,start,occurrence),其中:,string待查询的字符串,substring正在搜索的字符串,start说明开始搜索的字符位置。默认值是1,就是说,搜索将从字符串的第一个字符开始。如果,参数为负则表示搜索的位置从右边开始计算,而不是默认的从左边开始,occurrence指定试图搜索的子串的第几次出现,默认值是1,意味着希望其首次出现,该函数反馈一索引顺序值,在该位置发现了要搜索的子串。下面的例子指出了INSTR函数的使用情况:,INSTR(AAABAABA,B)=4,INSTR(AAABAABA,B,1,2)=7,Oracle 8i数据库管理,WinnerSoft,33,SQL内置函数,Oracle 8i数据库管理,WinnerSoft,INSTRB,该函数与INSTR的功能极为类似,也将反馈其中的一个字符串(参数)是否在另一个字符串(也是参数)当中。只是该函数返回的是一字节索引位置,而不是一字符索引位置。其实,仅仅在多个字符集同时被使用时,这种不同才有意义。,其具体的语法格式如下:,INSTRB(string,substring,start,occurrence),其中:,string待查询的字符串,substring正在搜索的字符串,start说明开始搜索的字符位置。默认值是1,就是说,搜索将从字符串的第一个字符开始。如果,参数为负则表示搜索的位置从右边开始计算,而不是默认的从左边开始,occurrence指定试图搜索的子串的第几次出现,默认值是1,意味着希望其首次出现,该函数反馈一索引顺序值,在该位置发现了要搜索的子串。下面的例子指出了INSTRB函数的使用情况:,INSTRB(AAABAABA,B)=4,INSTRB(AAABAABA,B,1,2)=7,34,SQL内置函数,LAST_DAY,函数LAST_DAY返回实参数指定日期对应月份的最后一天。其具体的语法格式如下:,LAST_DAY(date),其中:,date一日期数值,下面是该函数的使用情况:,LAST_DAY(TO_DATE(29-Dec-1988,dd-mon-yyyy),=31-Dec-1988,LAST_DAY(TO_DATE(1-Feb-2000,dd-mon-yyyy),=29-Feb-2000,Oracle 8i数据库管理,WinnerSoft,35,SQL内置函数,LEAST,LEAST函数返回参数给定的数值列表中的最小值。对数值数据或字符串数据均有效。,其具体的语法格式如下:,LEAST(value,value,value,),其中:,value一数字或文本数值。尤其要注意的是所有的数据类型应该一致。如果类型相混,返回值将匹配第一个参数的数据类型,而且,其它所有的参数均被转换成该参数的数据类型,下面是该函数的使用情况:,LEAST(1,3,9,45,93,2,-100)=-100,LEAST(Jenny,Jeff,Ashley)=Ashley,LEAST(110,12)=110,第三个例子说明了,当参数的数据类型相混时函数的处理机制。因为第一个参数实字符串,所以,将数字1转换成字符串1,一匹配对应的数据类型。虽然在数值上110大于12,但如果都转换成字符串,则结果正好相反。这种情况下,12大于110(一顺序为基础),这就是函数的返回结果。,Oracle 8i数据库管理,WinnerSoft,36,SQL内置函数,LENGTH,LENGTH函数返回字符串的长度。,其具体的语法格式如下:,LENGTH(string),其中:,string任意字符串,下面是该函数的使用情况:,LENGTH(This is short)=13,LENGTH(This is a bit longer)=20,Oracle 8i数据库管理,WinnerSoft,37,SQL内置函数,LENGTHB,LENGTHB函数返回字符串的长度。但在多字符集同时使用时会有所区别。,其具体的语法格式如下:,LENGTHB(string),其中:,string任意字符串,下面是该函数的使用情况:,LENGTHB(This is short)=13,LENGTHB(This is a bit longer)=20,Oracle 8i数据库管理,WinnerSoft,38,SQL内置函数,LN,函数LN返回一数值的自然对数。,其具体的语法格式如下:,LN(number),其中:,number大于0的任意数值,下面是该函数的使用情况:,LN(10)=2.3025851,EXP(2.3025851)=10,可见,将函数LN的结果作为参数,通过再调用函数EXP可得到函数LN的原参数值。,Oracle 8i数据库管理,WinnerSoft,39,SQL内置函数,LOG,LOG函数返回数值的非自然对数。,其具体的语法格式如下:,LOG(logbase,number),其中:,logbase除1和0以外的任意数值,是对数的底,number及对数的真数,下面是该函数的使用情况:,LOG(10,100)=2,LOG(EXP(1),10)=2.3025851=LN(10),因为10,2,等于100,所以,以10为底时100的对数是2。注意:LOG(e,x)=LN(x).可以使用EXP(1)得到e的值。,Oracle 8i数据库管理,WinnerSoft,40,SQL内置函数,LOWER,函数LOWER返回参数指定字符串的小写形式。,其具体的语法格式如下:,LOWER(atring),其中:,string任意VARCHAR2型或CHAR型的数值,下面是该函数的使用情况:,LOWER(This IS a Test)=This is a test,Oracle 8i数据库管理,WinnerSoft,41,SQL内置函数,LPAD,LPAD函数从左面填充指定的字符串。,其具体的语法格式如下:,LPAD(string,numchars,padding),其中:,string任意VARCHAR2型或CHAR型的字符串,numchars返回字符串的字符个数,padding填充字符。是一可选项,默认为单个空格,下面是该函数的使用情况:,LPAD(Jenny,10)=Jenny(5 leading spaces),LPAD(Jenny,10,*)=*Jenny,LPAD(Jenny,10,*!)=*!*!*Jenny,Oracle 8i数据库管理,WinnerSoft,42,SQL内置函数,LTRIM,LTRIM函数删除字符串左边的前缀字符。一般前缀字符总是空格。,其具体的语法格式如下:,LTRIM(string,trimchars),其中:,string任意VARCHAR2型或CHAR型的数值,trimchars待删除的字符串,下面是该函数的使用情况:,LTRIM( Jeff)=Jeff(leading spaces removed),LTRIM(*Jeff,*)=Jeff,LTRIM(*!*!*Jeff,*!)=Jeff,Oracle 8i数据库管理,WinnerSoft,43,SQL内置函数,MOD,MOD函数返回一个数除以另一数的余数。,其具体的语法格式如下:,MOD(number,divisor),其中:,number任意数值,divisor任意数值。该函数计算number/divisor的余数,下面是该函数的使用情况:,MOD(14,12)=2(1400 hours=2:00 OClock),MOD(10,10)=0,MOD(10,0)=10,注意:如果除数为0则返回原来的数,Oracle 8i数据库管理,WinnerSoft,44,SQL内置函数,MONTHS_BETWEEN,MONTHS_BETWEEN函数返回两个日期之间的月份数,其具体的语法格式如下:,MONTHS_BETWEEN(date_1,date_2),其中:,date_1日期型数据,date_2一日期型数据,如果两个参数代表的是某月中的同一日期,或它们军代表的某月中的最后一天,则该函数返回一整型值。否则,将返回一分数。另外,如果第一个参数代表的日期小于第二个参数代表的日期,则返回一负值。,下面是该函数的使用情况:,MONTHS_BETWEEN(TO_DATE(29-Dec-1999,dd-mon-yyyy),TO_DATE(29-Dec-1988,dd-mon-yyyy))=132,MONTHS_BETWEEN(TO_DATE(29-Dec-1999,dd-mon-yyyy),TO_DATE(24-Nov-1988,dd-mon-yyyy))=133.16129,在第一个例子中,两个参数均为某一月中的29号,所以返回一整型值(其间相差的月份数),在第二个例子中,因两个参数表示的日期不是同一天,所以返回一分数(以31天为基础计算处理),Oracle 8i数据库管理,WinnerSoft,45,SQL内置函数,NEW_TIME,NEW_TIME函数将在时区间转换日期/时间数据。,其具体的语法格式如下:,NEW_TIME(date,oldzone,newzone),其中:,date一日期数值。在Oracle中,除其自己以外,所有日期数值都有时间和记号这样的成分,oldzone代表时区的字符串。有效的时区如表所示。被推算出的日期数值就在该时区当中,newzone也是代表时区的字符串。被从老时区到新时区转换的日期数值,下面是该函数的使用情况:,NEW_TIME(TO_DATE(25-Dec-1999 8:00,dd-mom-yyyy HH:MI),EST,PST)=25-DEC-1999 05:00,Oracle 8i数据库管理,WinnerSoft,46,SQL内置函数,NEXT_DAY,NEXT_DAY函数返回从实参日期开始,紧随其后的指定星期对应的日期。,其具体的语法格式如下:,NEXT_DAY(date,weekday),其中:,date一日期数据,weekday一字符串,说明某一天的星期几的名称。可以使用全称,也可以使用缩写,但对于用户的编程语言做的日期设置来说必须是有效的日期,下面是该函数的使用情况:,NEXT_DAY(TO_DATE(24-Nov-1999),dd-mon-yyyy,FRIDAY),=26-Nov-1999,NEXT_DAY(TO_DATE(24-Nov-1999),dd-mon-yyyy,WED),=01-Dec-1999,注意:在第二个例子当中,24-Nov-1999正好落在星期三:Wednesday。下一个WED自然就是1-Dec-1999,所以,函数NEXT-DAY返回的结果就是,01-Dec-1999,Oracle 8i数据库管理,WinnerSoft,47,SQL内置函数,NVL,NVL函数需要两个参数。如果第一个参数为空,则返回第二个参数。第二个参数表示是第一个参数的替换对象。,其具体的语法格式如下:,NVL(value,alternative),其中:,value一个可为空的值。它不为空的时候将作为返回值,alternative只要它不是空的就是将被返回的值,下面是该函数处理数据库的某些列包括空值时的情况:,SELECT emp_id,NVL(emp_name,Name Missing!),FROM emp_table;,在该例中,如果雇员有名字,将通过该函数返回其名字。如果雇员的名字为空,将返回Name Missing!,Oracle 8i数据库管理,WinnerSoft,48,SQL内置函数,POWER,函数POWER返回一个数值的指定次幂。,其具体的语法格式如下:,POWER(number,power),其中:,number任意数值,power幂次数。函数的结果其实即:number幂次。如果第一个参数为负数,则该幂次数务必是一整数。其它情况可为任意数值,下面是该函数的使用情况:,POWER(10,2)=100(10*10),POWER(10,3)=1000,POWER(-10,3)=-1000,Oracle 8i数据库管理,WinnerSoft,49,SQL内置函数,RAWTOHEX,RAWTOHEX函数将一raw转换成十六进制字符表示的串值。,其具体的语法格式如下:,RAWTOHEX(raw_value),其中:,raw_value一RAW型数值,下面是该函数的使用情况:,SQL,CREATE TABLE xx(y raw(10);,Table created.,SQL,INSERT INTO xx VALUES(HEXTORAW(414243);,1 row created.,SQL,SELECT RAWTOHEX(y) FORM xx;,RAWTOHEX(Y),-,414243,Oracle 8i数据库管理,WinnerSoft,50,SQL内置函数,REPLACE,REPLACE函数在一字符串中搜索一指定的子串,并将其替换成另外一指定串。,其具体的语法格式如下:,REPLACE(string,substring,replace_string),其中:,string被搜索字符串。在其中搜索待替换串,substring被搜索子串。所有找到的子串均被替换掉,replace_string替换结果子串。是一可选项。如果该参数被忽略,则所有被搜索到的子串实质上均被删除,下面是该函数的使用情况:,REPLACE(This is a test,is,was)=Thwas was a test,REPLACE(This is a test,is)=Th a test,Oracle 8i数据库管理,WinnerSoft,51,SQL内置函数,ROUND(for dates),ROUND函数将一日期处理(舍入)成第二个参数指定的形式。,其具体的语法格式如下:,ROUND(date,fmt),其中:,date一个日期数值,fmt是一个日期格式说明符。指定日期将被处理成该说明符指定的形式。省略该参数,则指定日期将被处理到最近的一天,下面是该函数的使用情况:,ROUND(TO_DATE(24-Nov-1999 08:00 pm,dd-mon-yyyy hh:mi am),=25-Nov-1999 12:00:00 am,ROUND(TO_DATE(24-Nov-1999 08:37 pm,dd-mon-yyyy hh:mi am),hh),=24-Nov-1999 09:00:00 am,注意:这种处理过程可能意味着日期数值的改变。在第一个例子中,因为8:00 PM是紧邻第二天的一精确值,所以处理结果被转到下一天(25th)而不是当天(24th).,Oracle 8i数据库管理,WinnerSoft,52,SQL内置函数,ROUND(for number),ROUND函数将一数值处理(舍入)成第二个参数指定的形式的十进制数。,其具体的语法格式如下:,ROUND(value,places),其中:,value试图转换的数值,places结果中的十进制数位置。必须是一正整数,但可能是一负数。如果是负数,数字就被精确地处理在从小数点其左数的十进制数,下面是该函数的使用情况:,ROUND(89,985,2)=89.90(Note that .005 is rounded up.),ROUND(89,985,-1)=90,ROUND(89,985,-2)=100,Oracle 8i数据库管理,WinnerSoft,53,SQL内置函数,ROWIDTOCHAR,ROWIDTOCHAR函数将一行标志码(ROWID)转换成一字符串。,其具体的语法格式如下:,ROWIDTOCHAR(rowid),其中:,rowid一ROWID型数据,下面是该函数的使用情况:,SQLSELECT ROWIDTOCHAR(ROWID) FROM dual;,ROWIDTOCHAR(ROWID),-,AAAADCAABAAAAVUAAA,Oracle 8i数据库管理,WinnerSoft,54,SQL内置函数,RPAD,RPAD函数在字符串的后面追加若干字符。,其具体的语法格式如下:,RPAD(string,numchars,padding),其中:,string任意VARCHAR2型或CHAR型的数据,numchars函数结果串的长度,padding追加字符,单个的。是可选项,默认为空格,下面是该函数的使用情况:,RPAD(Jenny,10)=Jenny (5 trailing spaces),RPAD(Jenny,10,*)=Jenny*,RPAD(Jenny,10,*!)=Jenny*!*!*,Oracle 8i数据库管理,WinnerSoft,55,SQL内置函数,RTRIM,RTRIM函数压缩掉串右面的尾随字符,常常是从指定字符串(第一参数)中压缩空格。,其具体的语法格式如下:,RTRIM(string,trimchars),其中:,string任意VARCHAR2型或CHAR型的数据,trimchars准备压缩掉的字符(串),下面是该函数的使用情况:,RTRIM(Jeff )= Jeff(trailing spaces removed),RTRIM(Jenny*)= Jeff,RTRIM(Jenny*!*!*)= Jeff,Oracle 8i数据库管理,WinnerSoft,56,SQL内置函数,SIGN,SIGN函数返回实参的符号。对于负数返回-1,0返回0,正数返回+1。,其具体的语法格式如下:,SIGN(value),其中:,value输入的实参,你试图返回它的符号,下面是该函数的使用情况:,SIGN(-100)=-1,SIGN(0)=0,SIGN(100)=1,可以使用该函数和DECODE函数,根据一个数值的正、负或0,指明表达式间的不同。,Oracle 8i数据库管理,WinnerSoft,57,SQL内置函数,SIN,SIN函数返回一个角度的正弦值。,其具体的语法格式如下:,SIN(angle),其中:,angle待求解其正弦的角度。是一角度表达式。可参考函数COS了解从弧度到角度的转换,下面是该函数的使用情况:,SIN(90*3.1415926/180)=1,SIN(0)=0,Oracle 8i数据库管理,WinnerSoft,58,SQL内置函数,SOUNDEX,SOUNDEX函数根据以下规则返回一个字符串的发音描述。,1、保留字符串的首字母,2、删除下面的所有字母:a、e、h、I、o、u、w和y。,3、首字母后面的任一字母均按如下规则匹配于某一数字:,b,f,p,v=1,c,g,j,k,q,s,x,z=2,d,t=3,I=4,m,n=5,r=6,4、结果被缩写并转换成一个4位的数字,其具体的语法格式如下:,SOUNDEX(string),其中:,string任意字符串,下面是该函数的使用情况:,SOUNDEX(Gennick)=520 SOUNDEX(Genick)=520 SOUNDEX(Genyk)=520,Oracle 8i数据库管理,WinnerSoft,59,SQL内置函数,SORT,SORT函数返回一数字的算术平方根。,其具体的语法格式如下:,SORT(number),其中:,number试图求解其平方根的数值,非负数,下面是该函数的使用情况:,SORT(100)=10(because 10*10-100),SORT(100)=3.1622777,Oracle 8i数据库管理,WinnerSoft,60,SQL内置函数,SUBSTR,SUBSTR返回一字符串得指定字串。,其具体的语法格式如下:,SUBSTR(string,start,length),其中:,string任意字符串,start字串的开始位置。第一个位置总匹配为1。该参数可以为负数,这时从给定字符串的右面数起,length待匹配字串的长度。是一可选项,忽略它则匹配整个字符串,下面是该函数的使用情况:,SUBSTR(JennyJeffJonathan,6,4)=Jeff,SUBSTR(JennyJeffJonathan,-12,4)=Jeff,SUBSTR(JennyJeffJonathan,-8)=Jonathan,Oracle 8i数据库管理,WinnerSoft,61,SQL内置函数,SUBSTRB,SUBSTRB返回一字符串的指定部分。该函数与SUBSTR极为类似,只是该函数的start和length两参数均以字节为单位,而不是根据字符。这种区别只有在使用多种不同的字符集时才有意义。,其具体的语法格式如下:,SUBSTRB(string,start,length),其中:,string任意字符串,start字串的开始位置。第一个位置总匹配为1。该参数可以为负数,这时从给定字符串的右面数起,length待匹配字串的长度。是一可选项,忽略它则匹配整个字符串,下面是该函数的使用情况:,SUBSTRB(JennyJeffJonathan,6,4)=Jeff,SUBSTRB(JennyJeffJonathan,-12,4)=Jeff,SUBSTRB(JennyJeffJonathan,-8)=Jonathan,Oracle 8i数据库管理,WinnerSoft,62,SQL内置函数,SYSDATE,SYSDATE函数返回当前日期时间,一直到秒。,其具体的语法格式如下:,SYSDATE,SYSDATE没有参数。,下面是该函数的使用情况:,SQLSELECT SYSDATE FROM DUAL;,SYSDATE,-,24-Nov-1999 06:45:00 pm,当然,结果会由于用户调用该函数的时机不同而不同。,Oracle 8i数据库管理,WinnerSoft,63,SQL内置函数,TAN,TAN函数返回一个角度的正切值。,其具体的语法格式如下:,TAN(angle),其中:,angle用弧度表示。可参考函数COS了解从弧度到角度的转换,下面是该函数的使用情况:,TAN(225*3.1415926535/180)=1,TAN(0)=0,Oracle 8i数据库管理,WinnerSoft,64,SQL内置函数,TANH,TANH函数返回一个角度的十六进制正切值。,其具体的语法格式如下:,TANH(angle),其中:,angle用弧度表示。可参考函数COS了解从弧度到角度的转换,下面是该函数的使用情况:,TANH(225*3.1415926535/180)=.99922389,TANH(0)=0,Oracle 8i数据库管理,WinnerSoft,65,SQL内置函数,TO_CHAR(for dates),TO_CHAR函数将一个日期型数据转换成一个字符型数据。,其具体的语法格式如下:,TO_CHAR(date,fmt,NLS_DATE_LANGUAGE=language),其中:,date任一DATE型数据,fmt一个日期格式说明符,它控制了代表日期型数据的字符型结果,language 使用
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!