ITPub博客

首页 > 数据库 > Oracle > 字符函数、数字函数和日期函数

字符函数、数字函数和日期函数

原创 Oracle 作者:brj880719 时间:2017-09-22 14:13:09 0 删除 编辑

一、官档

Book → SQL Language Reference → 5 Functions → Single-Row Functions

二、字符函数

大小写转换函数
函数 说明
UPPER 语法:UPPER(string)
说明:返回大写的string.不是字母的字符不变.如果string是CHAR数据类型的,那么结果也是CHAR类型的.如果string是VARCHAR2类型的,那么结果也是VARCHAR2类型的.
例子:
  1. SELECT UPPER('AaBbCcDd') "AaBbCcDd"
  2.   FROM DUAL;
LOWER 语法:LOWER(string)
说明:返回小写的string。不是字母的字符不变。
  • 如果string是CHAR数据类型的,那么结果也是CHAR类型的。
  • 如果string是VARCHAR2类型的,那么结果也是VARCHAR2类型的。
例子:
  1. SELECT LOWER('AaBbCcDd') "AaBbCcDd"
  2.   FROM DUAL;
INITCAP 语法:INITCAP(string)
说明:返回字符串的每个单词的第一个字母大写而单词中的其他字母小写的string。单词是用.空格或给字母数字字符进行分隔。不是字母的字符不变动。
例子:
  1. SELECT INITCAP('ryan') UPP
  2.   FROM DUAL;
字符处理函数
函数 说明
CONCAT 语法:CONCAT(string1,string2)
说明:返回string1,并且在后面连接string2。
例子:
  1. SELECT CONCAT('010-','88888888')||'转23' 电话
  2.   FROM DUAL;
SUBSTR 语法:SUBSTR(string,a[,b])
说明:返回从字母为值a开始b个字符长的string的一个子字符串.如果a是0,那么它就被认为从第一个字符开始.如果是正数,返回字 符是从左边向右边进行计算的.如果b是负数,那么返回的字符是从string的末尾开始从右向左进行计算的.如果b不存在,那么它将缺省的设置为整个字符串.如果b小于1,那么将返回NULL.如果a或b使用了浮点数,那么该数值将在处理进行以前首先被却为一个整数.
例子:
  1. SELECT SUBSTR('13088888888',3,8)
  2.   FROM DUAL;
LENGTH 语法:LENGTH(string)
说明:返回string的字节单位的长度.CHAR数值是填充空格类型的,如果string由数据类型CHAR,它的结尾的空格都被计算到字符串长度中间. 如果string是NULL,返回结果是NULL,而不是0.
例子:
  1. SELECT length('Ryan') FROM DUAL;
INSTR 语法:INSTR(string1, string2, [a,b])
说明:得到在string1中包含string2的位置. string1时从左边开始检查的,开始的位置为a,如果a是一个负数,那么string1是从右边开始进行扫描的.第b次出现的位置将被返回. a和b都缺省设置为1,这将会返回在string1中第一次出现string2的位置.如果string2在a和b的规定下没有找到,那么返回0.位置的计算是相对于string1的开始位置的,不管a和b的取值是多少.
例子:
  1. SELECT INSTR('oracle traning','ra',1,2) instring
  2.   FROM DUAL;
LPAD | RPAD 语法:LPAD(string1,x[,string2]),RPAD(string1,x[,string2])
说明:返回在X字符长度的位置上插入一个string2中的字符的string1。如果string2的长度要比X字符少,就按照需要进行复制后,进行左|右填充。如果string2多于X字符,则仅string1前面的X各字符被使用。如果没有指定string2,那么使用空格进行左|右填充。X是使用显示长度可以比字符串的实际长度要长。
例子:
  1. SELECT RPAD('Ryan',10,'*'), LPAD('Ryan',10,'*')
  2.   FROM DUAL;
TRIM 语法:TRIM([[LEADING||TRAILING||BOTH] c2 FROM] c1)
说明:
  1. 如果没有指定任何参数则oracle去除c1头尾空格
  2. 如果指定了参数则会去掉c1头部c2
  3. 如果指定了leading参数则会去掉c1头部c2
  4. 如果指定了trailing参数则会去掉c1尾部c2
例子:
  1. 例一:
    1. SELECT TRIM(' What is tHis')
    2.   FROM DUAL;
  2. 例二:
    1. SELECT TRIM('W' FROM 'What is tHis w W')
    2.   FROM DUAL;
  3. 例三:
    1. SELECT TRIM(LEADING 'W' FROM 'What is tHis w W')
    2.   FROM DUAL;
  4. 例四:
    1. SELECT TRIM(TRAILING 'W' FROM 'What is tHis w W')
    2.   FROM DUAL;
REPLACE 语法:REPLACE(string,search_str[,replace_str])
说明:把string中的所有的子字符串search_str用可选的replace_str替换,如果没有指定replace_str,所有的string中的子字符 串search_str都将被删除。REPLACE是TRANSLATE所提供的功能的一个子集。
例子:
  1. SELECT REPLACE('He love you','He','I')
  2.   FROM DUAL;

三、数字函数

函数 说明
ROUND 语法:ROUND(x[,y])
说明:返回舍入到小数点右边Y位的X值。Y缺省为0,这将X舍入为最接近的整数。如果Y是负数, 那么舍入到小数点左边相应的位上,Y必须为整数。
例句:
  1. SELECT ROUND(55.5), ROUND(-55.4)
  2.   FROM DUAL;
TRUNC 语法:TRUNC(x[,y])
说明:截取值函数,Y缺省为0,这样X被截取成一个整数。如果Y为负数,那么截取到小数点左边相应位置
例句:
  1. SELECT TRUNC(124.1666,-2), TRUNC(124.16666,2)
  2.   FROM DUAL;
MOD 语法:MOD(被除数,除数)
说明:求余函数,如果除数为0,则返回被除数。
例句:
  1. SELECT MOD(10,3),
  2.        MOD(3,3),
  3.        MOD(2,3)
  4.   FROM DUAL;

四、日期函数

函数 说明
SYSDATE 语法:SYSDATE
说明:返回当前日期和时间。
例句:
  1. SELECT SYSDATE FROM DUAL;
MONTHS_BETWEEN 语法:MONTHS_BETWEEN(f,s)
说明:返回两个日期间的 月份
例句:
  1. SELECT MONTHS_BETWEEN(SYSDATE,TO_DATE('2017-11-12','YYYY-MM-DD'))
  2.   FROM DUAL;
ADD_MONTHS 语法:ADD_MONTHS(d,n)
说明:返回把月份数加到日期上的新日期
例句:
  1. SELECT ADD_MONTHS(SYSDATE,2)
  2.   FROM DUAL;
NEXT_DAY 语法:NEXT_DAY(d, day_of_week)
说明:返回由"day_of_week"命名的,在变量"d"指定的日期之后的第一个工作日的日期。参数"day_of_week"必须为该星期中的某一天。
例句:
  1. SELECT NEXT_DAY(SYSDATE,1)
  2.   FROM DUAL;
LAST_DAY 语法:LAST_DAY(日期)
说明:本月最后一天
例句:
  1. SELECT LAST_DAY(SYSDATE)
  2.   FROM DUAL;
ROUND 语法:ROUND(date,[fmt])
说明:按指定格式对日期进行四舍五入
例句:
  1. SELECT ROUND(SYSDATE,'YEAR')
  2.   FROM DUAL;
TRUNC 语法:TRUNC(date,[fmt])
说明:返回截取时间部分后的DATE,如果有fmt部分的设置,则返回与该部分最近的日期
例句:
  1. SELECT TRUNC(SYSDATE,'YEAR')
  2.   FROM DUAL;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24851054/viewspace-2145352/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 条件和排序
下一篇: 转换函数
请登录后发表评论 登录
全部评论

注册时间:2014-12-06

  • 博文量
    75
  • 访问量
    67553