Oracle PL/SQL开发基础(第二十一弹:基本函数)

字符型函数

函数名称描述
LOWER(X)将字符串X转换为小写,只影响字母字符串
UPPER(X)将字符串X转换为大写,只影响字母字符串
INITCAP(X)将字符串X中每一个单词的第一个字母转换为大写,其他的均为小写,只影响字母字符串
NLS_INITCAP(X)与INITCAP相同,它可以使用NLSSORT指定的分类的方法
NLS_LOWER(X)与LOWER相同,它可以使用NLSSORT指定的分类的方法
NLS_UPPER(X)与UPPER相同,它可以使用NLSSORT指定的分类的方法
CONCAT(X,Y)连接两个字符串,与“
INSTR(X,Y)返回Y在X中的位置,如果Y不存在于X中,则返回0
INSTRB(X,Y)返回Y在X中的位置,如果Y不存在于X中,则返回0,对于单字节字符系统,返回的值以字节为单位
LENGTH(X)返回X的长度,如果值是未知的,则返回NULL
LENGTHB(X)与LENGTH(X)相同,对于单字节字符系统,返回的值以字节为单位
LPAD(X,I,Y)用字符串Y按指定填充数I填充X字符串的左边
RPAD(X,I,Y)用字符串Y按指定填充数I填充X字符串的右边
LTRIM(X)裁剪字符串左边的空格
RTRIM(X)裁剪字符串右边的空格
TRIM(X)裁剪字符串两边的空格
SUBSTR(string,x[,y])可选的y表示y个字符长度,如果x为0,则认为是从string开始的位置,如果x为正数,则返回的字符是从左边开始向右边计算;如果x为负数,则返回的字符是从字符串穿末尾的地方开始向左边开始计算。如果没有y,则设置为整个字符串的长度,如果给定的y小于1,则SUBSTR返回NULL。如果x或y是浮点数,则SUBSTR在处理前先将x和y截断为整数再进行计算。
SUBSTRB与SUBSTR相同,以字节数而非字符数返回字符串的一部分
REPLACE(string,searchstr[,replacestr])用replacestr取代string中的searchstr,如果没有replacestr,则所有searchstr都被删除。
TRANSLATE(string,fromstr,tostr)使用tostr替换掉在string中出现的所有fromstr,功能与REPLACE相似,只是TRANSLATE函数中的tostr参数不能缺少,更不能为空白字符串,因为Oracle会将空白字符串理解为NULL,因此TRANSLATE的结果也将为NULL。
SOUNDEX返回字符串的语言表示

数值型函数

函数名称描述
ROUND(x,y)四舍五入x的值为y位小数位,如果y忽略,则无小数位,如果y为负数,则小数点左边的数被四舍五入。可以用于日期类型的值。
TRUNC(x,y)截断x的值到y位小数,如果y被忽略,那么y的默认值为0。可以用于日期类型的值。
MOD(x,y)返回x除以y的余数

日期时间函数

在日期函数中,比较常见的是对日期进行运算的函数。
从日期加或者减一个数,结果是一个日期值。
两个日期相减,得到两个日期之间的天数。
如:

SELECT SYSDATE - 1 当前日期减1, SYSDATE - (SYSDATE - 100) 两个日期相减,
       SYSDATE + 5 / 24 当前日期加5小时
  FROM DUAL;
SELECT SYSDATE-(SYSDATE-100) FROM DUAL;
函数名称描述
MONTH_BETWEEN(date1,date2)计算date1和date2之间的月数,其结果可以是正的也可以是负的。如果date1大于date2,则是正的,反之,是负的。结果的小数部分表示月的一部分。
ADD_MONTH(date,n)添加n个日历月到date。n的值必须是整数,但可以是负的。
NEXT_DAY(date,’char’)计算在date之后的下一个周(‘char’)的指定天的日期。char的值可能是一个表示一天的数或者是一个字符串
LAST_DAY(date)计算包含date的月的最后一天的日期
ROUND(date[,’fmt’])返回用格式化模式fmt四舍五入到指定单位的date,如果格式模式fmt被忽略,date被四舍五入到最近的天
TRUNC(date[,’fmt’])返回用格式化模式fmt截断到指定单位的带天的时间部分的date,如果格式模式fmt被忽略,date被截断到最近的天

如:

BEGIN
   DBMS_OUTPUT.put_line (   '两个日期之间的差异月份:'
                         || MONTHS_BETWEEN ('1995-01-01', '1994-11-01')
                        );
   DBMS_OUTPUT.put_line ('向指定日期添加月份:' || ADD_MONTHS (SYSDATE, 6));
   DBMS_OUTPUT.put_line ('下个星期五为:' || NEXT_DAY (SYSDATE, '星期五'));
   DBMS_OUTPUT.put_line ('显示当前月的最后1天:' || LAST_DAY (SYSDATE));
END;
SELECT TRUNC (SYSDATE, 'MONTH'), ROUND (SYSDATE, 'YEAR'),
       ROUND (SYSDATE, 'DAY'), TRUNC (SYSDATE, 'YEAR'),
       TRUNC (SYSDATE, 'DAY'), TRUNC (SYSDATE, 'HH24'), TRUNC (SYSDATE, 'MI')
  FROM DUAL;

注意,要使上述的结果能正确运行,要确保使用ALTER SESSION语句修改了nls_date_format日期格式,否则输入将会引发异常。

类型转换函数

函数名称描述
CHARTOROWID将包含外部格式的ROWID的CHAR或VARCHAR2数值转换为ROWID格式
CONVERT将一个字符集转换到另一个字符集
HEXTOCHAR将十六进制字符串转换为RAW类型的值
ROWIDTOCHAR将ROWID转换为字符串表示形式
TO_BLOB将指定的值转换为BLOB类型的值
TO_CHAR将日期型或数字类型转换为VARCHAR2类型的值
TO_CLOB将指定的值转换为CLOB类型的值
TO_DATE将CHAR或VARCHAR2字符串强制转换为日期值
TO_LABEL将CHAR或VARCHAR2字符串强制转换为MLSLABEL
TO_MULTI_BYTE将任何单字节字符串转换为多字节字符串
TO_NUMBER将CHAR或VARCHAR2字符串强制转换为NUMBER值
TO_SINGLEBYTE将任何多字节字符串转换为单字节字符串
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值