SQL内置函数说明

一般地,日期格式说明符是不太敏感的。然而,当为了显示而说明日期格式、对于文本数据中的说明符等情况下,它就变得比较务实、具体了。以月份的名字为例,通过下面引用的结果解释一下该情况的效果:
 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
SQL内置函数
ABS
 ABS函数返回一数值的绝对值。负数将舍去其负号。下面是它的语法格式:
 ABS(number)
 其中,number是希望得到其绝对值的数值
 ABS函数截去数值的符号。如下例所示:
 ABS(5)=5
 ABS(5)=5
 不管是5还是-5,其绝对值均为5。
SQL内置函数
ACOS
 ACOS函数返回一数值的反余弦值。结果以弧度表示,且在0到PI之间。
 其语法格式如下:
 ACOS(number)
 其中,number必须是-1与1之间的值
 下面的例子显示了1和-1 的反余弦值:
 ACOS(1)=0
 ACOS(-1)=3.1415927(PI)
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,也同样是为了保持对应的最后一天。
SQL内置函数
ASCII
 ASCII函数返回你指向的字符串首字母的十进制表示代表码值。该返回值或许是ASCII码值,也或许不是。如果用户的数据库字符集是7位的ASCII值,那就得到一ASCII码值。该返回值总是以用户使用的字符集为基础的。
 ASCII(string)
 其中:string一个字符串。更多的时候就是一字符
 下面的例子解释了该函数的使用:
 ASCII(‘j’)=74
 ASCII(‘jeff’)=74
 从上面的第二个例子,我们不难看出,如果指定了一个多字符串,该函数将忽略除首字母外的所有字符。
SQL内置函数
ASIN
 ASIN函数返回一数值的反正弦值。结果以弧度表示,且在-PI/2到PI/2之间。
 其语法格式如下:
 ASIN(number)
 其中:number必须是-1与1之间的值
 下面的例子显示了1和-1的反正弦值:
 ASIN(1)=1.57
 ASIN(-1)=-1.57
SQL内置函数 
ATAN
 ATAN函数返回一数值的反正切值。结果以弧度表示,且在-PI/2到PI/2之间。
 其语法格式如下:
 ATAN(number)
 其中:number必须是-1与1之间的值
 下面的例子显示了1和-1 的反正切值:
 ATAN(1)=0.7854
 ATAN(-1)=-0.7854
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
SQL内置函数
BFILENAME
 BFILENAME函数返回一指向磁盘的物理文件的BFILE地址。
 其语法格式如下:
 BFILENAME(directory,filename)
 其中:
 directory  一个包括指定文件的目录路径字符串。   该目录通过命令CREATE DIRECTORY产生。    但它不是一个操作系统目录
 filename   指定目录中用户试图指定的文件名字。   该文件可以是预先不存在的文件
 下面的例子解释了BFILENAME函数的使用情况:
 BFILENAME(‘gif_dir’,’book_photo.gif’)
SQL内置函数
CEIL
 CEIL函数根据输入值返回一个数值。输入参数可以是非整数值,但返回结果则是大于等于输入参数的最小整数。
 其语法格式如下:
 CEIL(number)
 其中:
 number 任意数值,十进制数
 下面的例子解释了CEIL函数的使用情况:
 CEIL(5.1)=6
 CEIL(-5.1)=-5
 应注意,对于负数使用该函数的结果。大于等于-5。1的最小整数精确地讲应该是-5。这是数学上的情况,但首先也是记数中知觉上的感觉。
SQL内置函数
CHARTOROWID
 CHARTOROWID函数将一个字符串转换成rowid类型。
 其语法格式如下:
 CHARTOROWID(string)
 其中:
 string 待处理的字符串。该字符串应该能表示一个有效的  rowid型数据
 下面的例子解释了CHARTOROWID函数的使用情况:
 SQL>SELECT ROWID FORM dual;
 ROWID
 ----------
 AAAADCAABAAAAVUAAA
 SQL>SELECT * FORM dual
  2 WHEREROWID=CHARTOROWID(‘AAAADCAABAAAAVUAAA’);
 D
 -
 X
SQL内置函数
CHR
 CHR函数就相应的数据库字符集,返回一个指定数值相应的字符。例如,给定一个ASCII值,使用CHR函数返回该数值表示的字符。
 其语法格式如下:
 CHR(integer[USING NCHAR_CS])
 其中:
 integer  在相应的字符集中,代表对应字符   的整数类型
 USINGNCHAR_CS 指明相应的字符集
 下面的例子解释了CHR函数的使用情况:
 CHR(10)=a tab character
 CHR(65)=‘A’
 这些例子假设基于ASCII字符集
SQL内置函数
CONCAT
 CONCAT函数将两个输入字符串,组合成一个,并返回结果。
 其语法格式如下:
 CONCAT(string_1,string_2)
 其中:
 string_1 第一个字符串
 string_2 第二个字符串。该字符串将被拼接在第一  个字符串的尾部
 下面的例子解释了CONCAT函数的使用情况:
 CONCAT(‘This is’,’a test’)=‘This is atest’
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字符集转换。第二个例子从默认数据库字符集转换。
SQL内置函数
COS
 COS函数返回一角度的余弦值。结果为弧度值。
 其语法格式如下:
 COS(angle)
 其中:
 angle 角度值,用弧度表示
 下面的例子解释了COS函数的使用情况:
 COS(90*3.14/180)=.000796
 COS(0)=1
SQL内置函数
COSH
 COSH函数返回一角度的双曲余弦值。
 其语法格式如下:
 COSH(angle)
 其中:
 angle 角度值,以弧度表示
 下面的例子解释了COSH函数的使用情况:
 COSH(0)=1
 COSH(90*3.14/180)=2.507
 将角度值转化成弧度值,可以参考COS函数的有关部门信息
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;
SQL内置函数
DECODE(二)
 这个SQL语句展示了DECODE函数的左右基础功能特征。函数的输入值时BLOOD_TEST_FLAG列的数据,如果该列的值是‘Y’,那么,函数返回‘YES’。如果该列的值是NULL,那么,函数返回‘None’。如果没有与任何一个序偶匹配成功,则表示该列当前值无效,函数返回‘Invalid’。
 在SQL疑难问题中,DECODE函数常常发挥非常灵活的作用。其中的一个技术就是为了某种目的可以将一个表的行转换成列。例如:
 SQL>SELECTTO_CHAR(TRUNC(BIRTH_DATE,’YEAR’),’YYYY’),
 2  COUNT(*)
 3 FROM AQUATIC_ANIMAL
 4 WHERETO_CHAR(TRUNC(BIRTH_DATE,’YEAR’),’YYYY’)
 5  IN(‘1995’,’1996’,’1997’)
 6 GROUP BYTO_CHAR(TRUNC(BIRTH_DATE,’YEAR’),’YYYY’);
 TO_C COUNT(*)
 --- -------
 1995  1
 1996  3
 1997  1
 
SQL内置函数
 该例告诉我们,1995、1996和1997年各出生了多少动物。每一行显示不同的年。一旦希望将这些数值显示成3列,该如何处理?可以通过如表B-1所示的方法处理之。
SQL内置函数
EMPTY_BLOB
 EMPTY_BLOB函数返回一空的BLOB指针,该指针可以用在INSERT或UPDATE命令中,以初始化BLOB列项。
 其具体的语法格式如下:
 EMPTY_BLOB()
 该函数没有参数。下面的例子说明了如何使用该函数初始化BLOB列,并作为一个新行插入到表中。
 INSERT INTO some_table
 (blob_column)
 VALUES(EMPTY_BLOB());
SQL内置函数
EMPTY_CLOB
 EMPTY_CLOB函数与EMPTY_BLOB函数的功能类似,只不过对应CLOB而已。它返回一空的CLOB指针,该指针可以用在INSERT或UPDATE命令中,以初始化CLOB列。
 其具体的语法格式如下:
 EMPTY_CLOB()
 该函数没有参数。下面的例子说明了如何使用该函数初始化CLOB列,并作为一个新行插入到表中。
 INSERT INTO some_table
 (clob_column)
 VALUE(EMPTY_CLOB());

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)
SQL内置函数
FLOOR
 FLOOR函数返回一个小于或等于给定十进制数的最大整数。该函数的工作机制与函数CEIL的情况极为相似,但却正好相反。
 其具体的语法格式如下:
 FLOOR(number)
 其中:
 number 任意数,包括十进制数
 下面是该函数的使用情况:
  FLOOR(5.1)=5
  FLOOR(-5.1)=-6
 为了理解函数FLOOR和函数CEIL在处理负数时的不同机制,可以比较函数FLOOR(5.1)和函数CEIL(-5.1)的执行结果。
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’,并且,也是函数的返回结果。

SQL内置函数
HEXTORAW
 函数HEXTORAW将一个由十六进制字符组成的字符串转换成一个raw数值。
 其具体的语法格式如下:
 HEXTORAW(string)
 其中:
 string 十六进制字符组成的字符串数据
SQL内置函数
INITCAP
 INITCAP函数接收一字符串,并转换该字符串中的所有单词,以使各单词均以大写字母开头。
 其的语法格式如下:
 INITCAP(string)
 其中:
 string 任意一VARCHAR2或CHAR型数据
 下面是该函数的使用情况。
 INITCAP(‘This is a test’=‘This is atest’
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
SQL内置函数
INSTRB
 该函数与INSTR的功能极为类似,也将反馈其中的一个字符串(参数)是否在另一个字符串(也是参数)当中。只是该函数返回的是一字节索引位置,而不是一字符索引位置。其实,仅仅在多个字符集同时被使用时,这种不同才有意义。
 其具体的语法格式如下:
 INSTRB(string,substring[,start[,occurrence]])
 其中:
 string 待查询的字符串
 substring 正在搜索的字符串
 start 说明开始搜索的字符位置。默认值是1,就是说,搜索将从字  符串的第一个字符开始。如果,参数为负则表示搜索的位置从  右边开始计算,而不是默认的从左边开始
 occurrence 指定试图搜索的子串的第几次出现,默认值是1,意味着希望  其首次出现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值