分享

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

 张小龙net馆藏 2017-10-18

字符型函数

函数名称 描述
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;
  • 1
  • 2
  • 3
  • 4
函数名称 描述
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;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
SELECT TRUNC (SYSDATE, 'MONTH'), ROUND (SYSDATE, 'YEAR'),
       ROUND (SYSDATE, 'DAY'), TRUNC (SYSDATE, 'YEAR'),
       TRUNC (SYSDATE, 'DAY'), TRUNC (SYSDATE, 'HH24'), TRUNC (SYSDATE, 'MI')
  FROM DUAL;
  • 1
  • 2
  • 3
  • 4

注意,要使上述的结果能正确运行,要确保使用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 将任何多字节字符串转换为单字节字符串

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多