1、字符串函数
LENGTH() :字符长度, 比如:length('花生') = 2,length('peanutss') = 8
LENGTHB() : 字节长度,比如:lengthb('花生') = 4,lengthb('peanutss') = 8
ltrim(x,y) 函数是按照y中的字符一个一个截掉x中的字符,并且是从左边开始执行的,只要遇到y中有的字符, x中的字符都会被截掉, 直到在x的字符中遇到y中没有的字符为止函数命令才结束。相似的存在rtrim(x,y)函数。
Lpad(str1,number,str2)函数:如果str1不足number那么多位,则使用str2去补齐左边的空位。同样地存在RPAD()函数。
SUBSTR(str,x,y) :将字符串str从x位开始截取y位。Oracle 无左右取串函数,但实际上可通过调整x的值实现右截取。
eg: SUBSTR('peanutss', -4, 3) ,表示取最右边4位然后这部分字符串再按照从左到右截取3位。
CONCAT(char1, char2) :连接字符串
eg: select concat('peanut','ssss') from dual; ---- peanutssss
INITCAP(char) :首字母大写
LOWER(char):转换为小写
UPPER(char) :转换为大写
REPLACE(char, search_str, replace_str):字符串替换
eg: select replace('peanut99','99','ss') from dual; -- peanutss
INSTR(str1,str2,[pos],[nth])
表示查找str2在str1中出现的位置。参数pos表示开始查找的位置,可省略,默认为1;参数nth表示查找第nth次str2在str1中出现的位置,可省略,默认为1.
2、日期函数
sysdate : 获取当前系统时间
日期格式参数 含义说明
D 一周中的星期几
DAY 天的名字,使用空格填充到9个字符
DD 月中的第几天
DDD 年中的第几天
DY 天的简写名
IW ISO标准的年中的第几周
IYYY ISO标准的四位年份
YYYY 四位年份
YYY,YY,Y 年份的最后三位,两位,一位
HH 小时,按12小时计
HH24 小时,按24小时计
MI 分(SQL中不区分大小写,MM和mm被认为是相同的格式代码,所以Oracle的SQL采用了mi代替分钟)
SS 秒
MM 月
Mon 月份的简写
Month 月份的全名
W 该月的第几个星期
WW 年中的第几个星期
ADD_MONTHS(date, n) :指定日期date加上n月数后的日期值。eg:ADD_MONTHS(,2)
eg: select ADD_MONTHS( TO_DATE('2016-11-12 16:12:12', 'yyyy-mm-dd HH24:mi:ss'),2) from dual; -- 2017-01-12 16:12:12
MONTHS_BETWEEN(d1, d2) 返回 两个日期间的 月数
3、转换函数
TO_CHAR (d,[,fmt[,'nlsparams']])
日期转换函数,将一个日期转换为VARCHAR2数据类型。转换结果问题总是18位字符长度。nlsparams缺省时为当前系统语言。其中的格式,返回值大小写会相应显示。
eg:TO_CHAR('2016-11-12 16:12:12', 'mm-dd HH:mi:ss')
TO_DATE(CHAR[,fmt[,'nlsparams']])
将CHAR或VARCHAR2数据类型的值转换为DATE类型。其中fmt为指定字符串输出的日期语法,如果省略了fmt,char就使用缺省的日期语法.
eg:select TO_DATE('2016年11月12日 16时12分12秒', 'YYYY"年"MM"月"dd"日" HH24"时"mi"分"ss"秒"') from dual; -- 2016-11-12 16:12:12
注意:格式化样式中如果有中文,必须使用双引号围起来,不然会报 ora-01821:date formate not recognized 的错误。
TO_NUMBER('333') 将字符转换为数字
TO_TIMESTAMP('2007-10-10 00:00:00.0', 'yyyy-mm-dd hh24:mi:ssxff') 转换为时间戳格式
4、数字函数