欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

学习笔记:Oralce函数大全

程序员文章站 2024-01-09 20:42:46
Oracle 编者按 01. 字符函数 1.1 CHR(n) 1.2 CONCAT(ch1, ch2) 1.3 INITCA...


     编者按

截至2020 0717,感觉我找的是最全的,没有之一! ^. ^


     01. 字符函数

         1.1 CHR(n)

SELECT 
	CHR(54740) 别名1, 
	CHR(65) 别名2 
FROM DUAL;

---->
别名1   别名2
赵      A

功能: 给出整数X,返回对应的ASCII码字符。CHR和ASCII是一对反函数。
测试: 返回的是乱码… 跟编码也有关系吗? 自己研究去吧。

         1.2 CONCAT(ch1, ch2)

SELECT 
	CONCAT('520', '1314') || '嘿嘿' AS "C1", 
	'520' || '1314' AS "C2", CONCAT(520, 1314) AS "C3" 
FROM DUAL;

---->
C1           C2        C3
5201314嘿嘿   5201314   5201314

功能: 连接两个字符串;与 “||” 的区别,concat只能连接2个字符串, “||” 可以连接多个;MySQL中的concat可以连接多个字符串,即concat(ch1, ch2, ch3 ,…).
测试: OK.

         1.3 INITCAP(ch)

SELECT 
	INITCAP('smith pEOVE') "R1", 
	INITCAP('smith!pEOVE') "R2", 
	INITCAP('smith7pEOVE') "R3" 
FROM DUAL;

---->
R1            R2            R3
Smith Peove   Smith!Peove   Smith7peove

功能: 返回字符单词首字母大写,其余小写,单词首字母大写判断 用空格 和 非字母非数字 字符分隔。
测试: OK.

         1.4 LOWER(ch)

SELECT LOWER('PeoVE') RESULT FROM DUAL;

---->
RESULT
PEOVE

功能: 所有字母小写.
补充: SELECT LOWER(字段名) RESULT FROM DUAL;
测试: OK.

         1.5 LPAD(expr1, n, expr2)、RPAD(expr1, n, expr2)

SELECT 
	LPAD('peove', 10, '-') R1,
	LPAD('peove', 10) R2,
	LPAD('Peove', 3, '#') R3,
	LPAD('Peove', 7, 'ABC') R4
FROM DUAL;

---->
R1           R2            R3    R4
-----peove   |     peove   Peo   ABPeove

功能:
在 expr1 字符左边或右边粘贴数个 expr2 字符,直到字符总字节数达到 n 字节;expr2默认为空格。 ( LPAD 在列的左边粘贴字符,RPAD 在列的右边粘贴字符 )
如果 expr1 长度大于 n,则返回 expr1 左端 n 个字符。
如果 expr2 的长度要比 n 字符少,就复制 补充长度到 n。
如果 expr2 多于 n 字符,则仅 expr2 前面的 n 各字符被使用。
补充: RPAD 就不试了;当然也可以联合使用,如:LPAD(RPAD(‘Peove’, 7, ‘-’), 10, ‘#’).
测试: OK.

         1.6 NLS_INICAP(ch)、NLS_LOWER(ch)、NLS_UPPER(ch)

测试:
数据库函数提示只有第一个参数,如标题所写的那样,并没有这样的 NLS_INICAP(ch, nlsparams);
只用一个参数:和INICAP、LOWER、UPPER用法一样。
两个参数都用:第2个参数可以写 ‘NLS_SORT= SCHINESE_RADICAL_M’,但效果跟没有一样。

这三个函数等 高手 来补充。

         1.7 REGEXP_REPLACE(source, pattern, replace_str, pos, occ, par)

SELECT 
	REGEXP_REPLACE('HELLO world', 'o', '*') R1, 
	REGEXP_REPLACE('HELLO 171', '\d', '*') R2, 
	REGEXP_REPLACE('HELLO 171y', '\d+', '*') R3, 
	REGEXP_REPLACE('HeLLO 171', '[a-z0-9]', '*') R4, 
	REGEXP_REPLACE('HeLLO 171', '[a-zA-Z]', '*', 2, 1) R5, 
FROM DUAL;

---->
R1            R2	      R3		 R4			 R5
HELLO w*rld   HELLO ***   HELLO *y   H*LLO ***   H*LLO 171

功能: 10g新增函数,扩展了REPLACE函数的功能,并且用于按照特定正则表达式的规则替换字符串。
其中参数 (后面3个参数也可以不写)
source 指定源字符表达式,
pattern 指定正则表达式,
replace_str 指定替换字符串,
pos 起始位置(默认从1开始),
occ 替换的次数(0是无限次),
par 不区分大小写。
补充: 正则表达式的使用
测试: OK.

         1.8 REGEXP_SUBSTR(source, pattern, pos, occ, par)

SELECT 
	REGEXP_SUBSTR('http://www.oracle.com/products', 'http://([[:alnum:]\.?]+)') RESULT
FROM DUAL;

---->
RESULT
http://www.oracle.com

功能: 10g新增函数,扩展了SUBSTR函数的功能,并且用于按照特定表达式的规则返回字符串的子串。
其中参数 (后面3个参数也可以不写)
source 指定源字符表达式,
pattern 指定正则表达式,
pos 起始位置(默认从1开始),
occ 替换的次数(0是无限次),
par 不区分大小写。
补充: [[:alnum:]] 是所有的字母和数字。
测试: OK.

         1.9 REPLACE(source, search_str, replace_str)

SELECT 
	REPLACE('Fuck!!', 'Fuck', '*') RESULT
FROM DUAL;

---->
RESULT
*!!

功能: 把 source 中的所有的子字符串 search_str 用可选的 replace_str 替换,如果没有指定replace_str,所有的string中的子字符串search_str都将被删除。REPLACE是TRANSLATE所提供的功能的一个子集。
补充: 只能替换单个,想用高级的,用REGEXP_REPLACE
测试: OK.

         1.10 TRIM(trim_source)、LTRIM(ch)、RTRIM(ch)

SELECT 
	TRIM('  p e o v E  ') R1,
	TRIM('e' FROM 'eep e o v Ee') R2,
	LTRIM('eepeove', 'e') R3,
	RTRIM('eepeove', 'vee') R4
FROM DUAL;

---->
R1          R2			R3		R4
p e o v E   p e o v E   peove   eepeo

功能:
TRIM 修理左边和右边的,中间不处理;
LTRIM 只处理左边;
RTRIM 只处理右边。
补充:
TRIM、LTRIM、RTRIM 缺省值是 ‘’;
TRIM 只能写单字符,如 TRIM('e’e FROM ‘eep e o v Ee’) R2,会报错;
TRIM 想去掉两边 自定义的单字符时,需要用FROM,没有第2个参数用法;
LTRIM 和 RTRIM 有第2个参数,且可以写多字符。
测试: OK.

         1.10 未完待续


     02. 数学函数


     03. 日期时间函数

本文地址:https://blog.csdn.net/weixin_45433603/article/details/107385280