2009年4月16日星期四

Oracle SQL常用函数总结(2)


31、Tanh(arg)
说明:返回双曲线的正切值
例:Tanh(20) 结果为 1

32、Sysdate
说明:取系统当前时间
例:SELECT SYSDATE FROM DUAL;

33、Greatest
说明:取一组数中的最大值,比较字符的编码大小
例:Greatest('A','C','B') 结果为C

34、Least
说明:取一组数中的最小值,比较字符的编码大小
例:Least('A','C','B') 结果为A

35、To_Number
说明:将字符串转换为数字
例:To_Number(‘12345’) 结果为 12345
补充:这里的字符串必须由数字组成,否则不能转化

36、Last_Day(Sysdate)
说明:返回该月的最后一天的当前时刻
例:Last_Day(Sysdate) 结果为 2008-10-31 15:28:20

37、To_Char(date,’format’)
说明:将时间转换为指定格式
例:To_Char(Sysdate, ‘yyyy/mm/dd hh24:mi:ss’) 结果为 2008/10/07 15:34:13

38、To_Date(string,’format’)
说明:将string根据给定的时间匹配方式转换成为时间类型
例:To_Date('20081007153413','yyyymmddhh24miss') 结果为 2008-10-7 15:34:13

39、Next_Day(date,’dayofweek’)
说明:计算下个星期相同日的日期
例:Next_Day(’07-10月-2008’,’星期二’) 结果为 2008-10-14

40、Add_Months(date,month)
说明:给指定日期加上指定月份
例:To_Char(Add_Months(To_Date('2008,10,07 15:52:00',
'yyyy,mm,dd hh24:mi:ss'),
1),
'yyyy,mm,dd hh24:mi:ss') 结果为 2008,11,07 15:52:00

41、Months_Between(date2,date1)
说明:返回date2-date1的月份
例:Months_Between(Add_Months(Sysdate,1),Add_Months(Sysdate,-1)) 结果为 2

42、New_Time(date,this,that)
说明:返回this时区=that时区的日期和时间
例:SELECT To_Char(Sysdate, 'yyyy.mm.dd hh24:mi:ss') bj_time,
To_Char(New_Time(Sysdate, 'PDT', 'GMT'), 'yyyy.mm.dd hh24:mi:ss') los_angles
FROM DUAL; 结果为 2008.10.07 16:01:46 2008.10.07 23:01:46

43、RowIdToChar(rowid)
说明:将rowid转换成字符
例:RowIdToChar('AAAAfKAACAAAAEqAAA') 结果为 AAAAfKAACAAAAEqAAA

44、CharToRowId(char)
说明:将字符转换成rowid
例:CharToRowId(‘AAAAfKAACAAAAEqAAA’) 结果为 AAAAfKAACAAAAEqAAA

45、Convert(c,dset,sset)
说明:将原字符串c由原字符集sset转到目标字符集dset
例:Convert('Eleven.Xu 徐','we8hp','f7dec') 结果为 Eleven.Xu e>

46、HexToRaw(arg)
说明:将arg从16进制转换成为raw类型数据
例:HexToRaw(‘123’) 结果为 0123

47、RawToHex(arg)
说明:将arg从raw类型数据转成为16进制数据
例:RawToHex(‘0123’) 结果为 30313233

48、To_Multi_Byte(arg)
说明:将arg从单字节字符转换成为多字节字符
例:To_Multi_Byte(‘hello’) 结果为hello

49、User
说明:返回当前用户用户名
例:SELECT User FROM DUAL 结果为 APPS

50、UID
说明:用户的唯一标识
例:SELECT du.username, du.user_id
FROM dba_users du
WHERE du.username = (SELECT User FROM DUAL);

51、Soundex
说明:返回一个与给定字符串相同读音的字符串
例:略

52、Userenv(arg)
说明:若arg为 ‘isdba’,表示判断当前用户是否为DBA
若arg为 ‘sessionid’,表示判断当前sessionid
若arg为 ‘entryid’,表示会话人口id
若arg为 ‘instance’,表示当前instance标志
若arg为 ‘language’,表示当前环境语言
若arg为 ‘lang’,表示当前环境语言缩写
若arg为 ‘terminal’,表示当前终端或机器的标志
例:Userenv('isdba') 结果为 FALSE
Userenv('sessionid') 结果为 1416799
Userenv('entryid') 结果为 0
Userenv('instance') 结果为 1
Userenv('language') 结果为 SIMPLIFIED CHINESE_CHINA.UTF8
Userenv('lang') 结果为 ZHS
Userenv('terminal') 结果为 HAND-ELEVEN

53、VSize(arg)
说明:返回arg的字节数
例:VSize(‘1234’) 结果为 4

54、Decode(value,if1,then1,if2,then2,if3,then3,...,else)
说明:如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。
例:SELECT Decode(Sign(10-11),-1,10,11) FROM DUAL;(取最较小值)结果为 10
补充:详细解释请参考http://blog.csdn.net/elevenXL/archive/2008/10/08/3031647.aspx

55、Trunc(arg1,arg2)
说明:根据arg2规定的精度截取arg1
例:SELECT Trunc(111.112233,2) FROM DUAL; 结果为 111.11
SELECT Trunc(111.112233,-2) FROM DUAL; 结果为 100

56、Round(arg1,arg2)
说明:根据arg2规定的精度对arg1按四舍五入进行截取
例:SELECT Round(111.41,1) FROM DUAL; 结果为 111.4
SELECT Round(111.45,1) FROM DUAL; 结果为 111.5

57、BFileName(dir,fullfilename)
说明:指定外部dir目录下的fullfilename文件,在Insert语句中使用较多
例:略

58、initcap(arg)
说明:将arg中的首字母大写
例:略



详细的SQL脚本请查看:Oracle SQL 内置函数总结.sql

0 评论:

发表评论