Oracle函数

Oracle函数

 

字符函数

  大小写控制函数

一:LOWER ()

--全部小写
SELECT LOWER('SCOTT') "Lowercase"
FROM DUAL;

说明:

返回 char所有字母小写字符可以任何数据类型 CHAR
VARCHAR2 NCHAR NVARCHAR2 CLOB  NCLOB返回相同数据类型
char数据库设置基于二进制映射定义字符大小写
基础字符集

 

二:UPPER()

 

 

--全部大写
SELECT UPPER('scoot') "Uppercase"
FROM dual;

说明:

上层返回 char所有字母大写字符可以任何数据类型 CHAR
VARCHAR2 NCHAR NVARCHAR2 CLOB  NCLOB返回相同数据类型
char数据库设置基于二进制映射定义字符大小写
基础字符集

三:INITCAP()

--首字母大写
SELECT INITCAP('the soap') "Capitals"
FROM DUAL;

说明:

INITCAP 返回 char大写其他字母每个单词字母
小写字母空白字符分隔单词
字母数字
字符可以任何数据类型 CHAR VARCHAR2 NCHAR  NVARCHAR2返回
相同数据类型 char数据库设置初始字符大小写
基于二进制映射定义基础字符集

  字符控制函数

一:concat()

--连接
select concat('hehe','haha')hei from dual

说明

CONCAT 返回 char1  char2 连接Char1  char2 可以任意
数据类型 CHAR VARCHAR2 NCHAR NVARCHAR2 CLOB  NCLOB返回字符串
相同字符设置 char1数据类型取决数据类型
参数
串联两个不同数据类型Oracle 数据库返回数据类型
结果无损转换因此如果其中一个参数 LOB然后
返回 LOB如果其中一个参数国家数据类型
返回一个国家数据类型例如
 CONCAT (CLOB,NCLOB) 返回 NCLOB
 CONCAT (NCLOB、 NCHAR) 返回 NCLOB
 CONCAT (NCLOB、 CHAR) 返回 NCLOB
 CONCAT (NCHAR,CLOB) 返回 NCLOB
函数等同串联运算符 (|)。

 

二SUBSTR()

说明

SUBSTR 函数返回字符字符位置开始部分
substring_length 个字符SUBSTR 计算长度使用字符作为
输入字符集定义SUBSTRB 使用字节而不是字符SUBSTRC
使用完整的 Unicode 字符SUBSTR2 使用 UCS2 代码SUBSTR4 使用 UCS4
代码
 如果立场 0,那么视为 1。
 如果位置积极然后开始 char Oracle 数据库计数
找到第一个字符
 如果位置负数然后 Oracle 结尾字符
 如果省略 substring_length然后 Oracle 将返回所有字符末尾
char如果 substring_length 小于 1, Oracle 返回 null
字符可以任何数据类型 CHAR VARCHAR2 NCHAR NVARCHAR2 CLOB NCLOB
例外情况 SUBSTRC SUBSTR2  SUBSTR4允许字符
CLOB  NCLOB位置 substring_length 必须数据类型
任何数据类型可以隐式转换数字并且必须解析
整数返回作为字符点数传递相同数据类型
作为 SUBSTR 的参数自动转换整数
 
三:length()  lengthb()

说明:

长度函数返回字符长度长度计算长度使用
定义输入字符字符设置LENGTHB 使用而不是字节
个字符LENGTHC 使用完整的 Unicode 字符LENGTH2 使用 UCS2 代码
LENGTH4 使用 UCS4 代码
字符可以任何数据类型 CHAR VARCHAR2 NCHAR NVARCHAR2 CLOB NCLOB
例外情况 LENGTHC LENGTH2  LENGTH4允许字符
CLOB  NCLOB返回数字数据类型如果 char 数据类型 CHAR然后
长度包括所有尾随空格如果字符 null函数返回 null
 
四:INSTR()

 

说明:

INSTR 函数搜索字符串子字符串搜索操作定义
比较相同长度字符串字符串的子字符串参数
直到找到一个匹配没有更多平等子字符串左边每个连续
比较字符串子字符串开始一个字符 向前搜索)
一个字符 向后搜索) 第一个字符
以前比较子字符串如果找到等于子字符串字符串
函数返回一个整数指示第一个字符位置
子字符串如果找到没有这样子字符串函数返回
 位置一个非零整数指示字符串字符 Oracle
数据库开始搜索 — — 第一次第一个字符位置
比较子字符串子字符串如果位置负值 Oracle 计数
落后结尾字符串然后所得向后搜索
位置
 发生一个整数指示子字符串字符串哪个匹配项
Oracle 搜索发生必须正数如果发生
大于 1,数据库第一场比赛
上文直到比赛比较连续字符串字符串
发现发生
INSTR 接受返回字符位置输入字符集定义
位置 1 的字符串第一个字符INSTRB 使用而不是字节
个字符INSTRC 使用完整的 Unicode 字符INSTR2 使用 UCS2 代码
INSTR4 使用 UCS4 代码
字符串可以任何数据类型 CHAR VARCHAR2 NCHAR NVARCHAR2 CLOB NCLOB
例外情况 INSTRC INSTR2  INSTR4允许字符串
CLOB  NCLOB
子字符串可以任何数据类型 CHAR NCHAR NVARCHAR2 VARCHAR2 CLOB
NCLOB
返回数字数据类型
位置发生必须数据类型可以任何数据类型
隐式转换数字并且必须解析一个整数默认
位置发生都是 1,意思 Oracle 开始搜索第一次
子字符串第一个匹配字符串字符返回相对
字符串开始位置无论位置
 
五:LPAD() RPAD()

说明:

LPAD 返回 expr1左填充长度 n 个字符字符序列
 expr2这个函数用于格式化输出查询
Expr1  expr2 可以任何数据类型 CHARVARCHAR2 NCHAR NVARCHAR2
CLOB  NCLOB返回字符串 VARCHAR2 数据类型如果 expr1 字符数据
NVARCHAR2 如果 expr1 国家字符数据类型 LOB 类型如果 expr1  LOB
数据类型返回字符串作为 expr1 相同字符集参数 n
必须一个数字整数可以隐式地转换数字
整数
如果指定 expr2默认一个空格如果 expr1 长于 n,
然后函数返回 expr1 适合部分 n
参数 n 返回长度显示
终端屏幕大部分字符集字符
返回然而一些多字节字符集显示长度
字符字符串可以不同字符串字符
 
六:TRIM() 
 

说明:

修剪使可以修剪前导尾随字符 (或两者) 一个字符
字符串如果 trim_character  trim_source 原义字符然后必须附上
单引号
 如果指定领先然后 Oracle 数据库中删除任何前导字符
等于 trim_character
 如果指定然后 Oracle 中移除任何尾随字符等于
trim_character
 如果指定两个三个没有然后 Oracle 删除前导尾随
字符等于 trim_character
 如果没有指定 trim_character默认一个空间
 如果指定 trim_source然后 Oracle 删除前导尾随空白
空格
 函数返回一个数据类型 VARCHAR2最大长度
 trim_source 长度
 如果 trim_source  trim_character  null那么 TRIM 函数返回
则为 null
Trim_character  trim_source 可以 VARCHAR2 可以任何数据类型
隐式转换 VARCHAR2返回字符串 VARCHAR2 (NVARCHAR2) 数据
如果 trim_source  CHAR  VARCHAR2 (NCHAR  NVARCHAR2) 的数据类型 CLOB,请键入
如果 trim_source  CLOB 数据类型返回字符串相同字符设置
trim_source
 
    日期函数:
一:ADD_MONTHS()增加月数

说明:

ADD_MONTHS 返回日期日期加上整数个月一个定义的。
会话参数 NLS_CALENDAR日期参数可以一个 datetime 任何
可以隐式转换日期整数参数可以
整数可以隐式转换一个整数任何返回类型
总是日期日期数据类型如果日期本月最后一天
如果生成时间少于一天日期然后结果
结果月份最后一天否则结果同一
组件作为日期
 
二:months_between 两个日期相差的月数

select months_between
(to_date('02-02-1995','MM-DD-YYYY'),
TO_DATE('01-01-1995','MM-DD-YYYY')) "MONTHS"
from dual;

  日期相减

一:两个日期天数之差

select floor(sysdate - to_date('20020405','yyyymmdd'))from dual;

 

--隐式转换
select * from emp where hiredate='17-12月-80';

--显示转换

--to_char()对日期的转换
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

 

--to_char()对数字的转换
select to_char(sal,'L9,999,99') from emp;

--数字函数
--round()四舍五入
select round(12.45,1) from dual;

--trunc 截断
select trunc(15.79,1)"truncate" from dual;

 

--通用函数
--nv1和nv12 滤空函数

select sal*12工资,comm 奖金,sal*12+nvl(comm,0) from emp;

 


select sal*12工资,comm 奖金,sal*12+nvl2(comm,comm,0) from emp;

--decode函数
select product_id,
decode(warehouse_id,1,'Southlake',
2,'San Francisco',
3,'New Jersey',
4,'Seattle',
'Non domestic') "Location"
from inventories where product_id< 1775 order by product_id,"Location"

 
 
posted @ 2016-08-26 17:32  李泽阳  阅读(10316)  评论(0编辑  收藏  举报