字符型函数
函数名称 | 描述 |
---|
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 | 将任何多字节字符串转换为单字节字符串 |