当前位置: 移动技术网 > IT编程>数据库>Oracle > 学习笔记:Oralce函数大全

学习笔记:Oralce函数大全

2020年07月18日  | 移动技术网IT编程  | 我要评论


     编者按

截至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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网