Oracle常用函数——持续更新中

19.oracle格式化包含“年.月.日”中文时间
SELECT TO_CHAR(SYSDATE,'YYYY"年"MM"月"DD"日"') as 中文时间 FROM dual;

在这里插入图片描述

18.oracle列转行函数
SELECT REGEXP_SUBSTR ('1,2,3', '[^,]+', 1,rownum) from dual
connect by rownum<=LENGTH ('1,2,3') - LENGTH (regexp_replace('1,2,3', ',', ''))+1

在这里插入图片描述

17.cast函数和decimal函数

cast(字段名 as 转换的类型 )
decimal(3,1),表示数值中共有3位数,小数占1位

select cast('1.19' as decimal(3,1)) as result from  dual;

在这里插入图片描述

16.根据出生日期计算年龄TRUNC
SELECT A0101 as name,A0107 as birthday,TRUNC(months_between(sysdate, A0107)/12) AS age FROM A01;

在这里插入图片描述

15.Oracle获取Date日期年、月、日(extract)

语法1:extract(year FROM Date类型日期);
语法1:extract(month FROM Date类型日期);
语法1:extract(day FROM Date类型日期);

--方法1(extract函数):
SELECT extract(year FROM T2203) AS 年份 FROM TAL_A22;
SELECT extract(month FROM T2203) AS 年份 FROM TAL_A22;
SELECT extract(day FROM T2203) AS 年份 FROM TAL_A22;

--方法2(常用):
SELECT TO_CHAR(T2203,'yyyy') AS 年份 FROM TAL_A22;
SELECT TO_CHAR(T2203,'MM') AS 年份 FROM TAL_A22;
SELECT TO_CHAR(T2203,'dd') AS 年份 FROM TAL_A22;
14.Lpad和Rpad填充函数

Lpad函数:当字符串长度不够时,左填充补齐,可以指定补齐时用什么字符补齐,若不指定,则以空格补齐。
Rpad函数:当字符串长度不够时,右填充补齐,原理同左填充

-- 从左补充3个空格
SELECT '#'||Lpad('abc',6)||'#' FROM dual;

--从左补充3个*
SELECT '#'||Lpad('abc',6,'*')||'#' FROM dual;

--从右补充3个空格
SELECT '#'||Rpad('abc',6)||'#' FROM dual;

--从右补充3个*
SELECT '#'||Rpad('abc',6,'*')||'#' FROM dual;

执行结果:
在这里插入图片描述

13.initcap函数

initcap(ch),将首字母大写。

SELECT initcap('abc') FROM dual
UNION ALL
SELECT initcap('zhang san') FROM dual
UNION ALL
SELECT initcap('li si') FROM dual;

执行结果:
在这里插入图片描述

12.nlssort排序函数:

Oracle9i之前,中文是按照二进制编码进行排序的,在oracle9i中新增了按照拼音、部首、笔画排序功能。

-- 按照拼音排序
SELECT A0101 FROM A01 
ORDER BY NLSSORT(A0101,'NLS_SORT=SCHINESE_PINYIN_M');

-- 按照部首排序
SELECT A0101 FROM A01 
ORDER BY NLSSORT(A0101,'NLS_SORT=SCHINESE_RADICAL_M');

-- 按照笔画排序
SELECT A0101 FROM A01 
ORDER BY NLSSORT(A0101,'NLS_SORT=SCHINESE_STROKE_M');

11.concat拼接函数

oracle中CONCAT(ch1,ch2)函数有两个参数,作用是拼接字符串,以逗号分隔。

SELECT CONCAT(CONCAT('前缀', '||'),'后缀') FROM dual;

10.wm_concat列转行函数

wm_concat(ch)函数有一个参数,作用是列转行。

10.1实例:
-- 普通查询sql(列)
SELECT A0101 FROM A01 WHERE ROWNUM < 6;

--列转行
SELECT wm_concat(A0101) FROM A01 WHERE ROWNUM < 6;
10.2执行sql前与执行sql后结果对比:

行转列前:
在这里插入图片描述
行转列后:
在这里插入图片描述

9.oracle大小写转换函数

-- 小写转大写
SELECT upper('abc') FROM dual;

--大写转小写
SELECT lower('ABC') FROM dual;

8.instr函数

instr(ch1,ch2),判断ch1字符串中,是否包含ch2字符串。

--包含,则返回该字符串第一次出现的位置,
SELECT instr('abcd','ab') FROM dual;

--不包含,则返回0
SELECT instr('abcd','de') FROM dual;

7.replace函数

replace(ch1,ch2,ch3),将字符串ch1中出现的ch2字符串替换成ch3字符串。

SELECT replace('abcdabcefg','abc','#') FROM dual;

执行结果:
在这里插入图片描述

6.trim函数

trim(ch1),去除字符串首尾两端的空格;
trim(ch from source)从字符串两侧去除指定的所有字符串;

-- 去除字符串首尾两端的空格
SELECT '#'||trim(' abcda  bc efg  ')||'#' FROM dual;

-- 去掉abcddcba字符串两端的a字符(只能去除首尾单个字符)
SELECT '#'||trim('a' from 'abadba')||'#' FROM dual;

执行结果:
在这里插入图片描述

5.Ltrim和Rtrim函数

Ltrim函数:
从字符串左侧去除指定的所有字符串,若没有指定去除的字符串,则默认去除左侧空白符;
Rtrim函数:
从字符串右侧去除指定的所有字符串,原理同Ltrim函数;

-- 原字符串
SELECT '#'||' abcda  bc efg  '||'#' FROM dual;

-- 去掉左侧空格字符串
SELECT '#'||Ltrim(' abcda  bc efg  ')||'#' FROM dual;

-- 去掉右侧空格字符串
SELECT '#'||Rtrim(' abcda  bc efg  ')||'#' FROM dual;

-- 去掉左侧' ab'(ab前一个空格,若不加空格,去不掉ab串)字符串
SELECT '#'||Ltrim(' abcda  bc efg  ',' ab')||'#' FROM dual;

-- 去掉右侧'efg  '(efg后两个空格,若不加空格,去不掉efg串)字符串
SELECT '#'||Rtrim(' abcda  bc efg  ','efg  ')||'#' FROM dual;

执行结果:
在这里插入图片描述

4.length和lengthb函数

-- 查看所占字符
SELECT length('张三'),length('a*b') FROM dual

-- 查看所占字节
SELECT lengthb('张三'),length('a*b') FROM dual;

执行结果:
在这里插入图片描述

3.nvl和nvl2函数

nvl(ch1,ch2):参数ch1为null,返回ch2;
nvl2(ch1,ch2,ch3):参数ch1不为null,返回ch1,为null,返回ch2;

SELECT nvl(null,0),nvl2(NULL,0,1),nvl2('1',0,1) FROM dual;

执行结果:
在这里插入图片描述

2.数值函数(abs、ceil、floor)

abs(ch1):返回绝对值;
ceil(ch1):返回大于等于ch1的最小整数;
floor(ch1):返回小于等于ch1的最大整数;

-- abs函数
SELECT abs(-1),abs(0),abs(1) FROM dual;

-- ceil函数
SELECT ceil(-1.6),ceil(-0.1),ceil(1.1) FROM dual;

-- floor函数
SELECT floor(-1.6),floor(-0.1),floor(1.1) FROM dual;

执行结果:
在这里插入图片描述

1.round函数(四舍五入)

round(n1,n2)对n1进行四舍五入,保存小数点右侧的n2位。如果n2省略的话,相当于n2=0的情况;

-- 用法1:
SELECT round(-1.6),round(-1.5),round(-1.4) FROM dual
UNION ALL
SELECT round(1.6),round(1.5),round(1.4) FROM dual;

-- 用法2:
select round(555.666,-3),round(555.666,-2),round(555.666,-1) from dual
UNION ALL
select round(555.666,3),round(555.666,2),round(555.666,1) from dual;

执行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值