学习笔记:Oralce函数大全
Oracle
- 编者按
- 01. 字符函数
- 1.1 CHR(n)
- 1.2 CONCAT(ch1, ch2)
- 1.3 INITCAP(ch)
- 1.4 LOWER(ch)
- 1.5 LPAD(expr1, n, expr2)、RPAD(expr1, n, expr2)
- 1.6 NLS_INICAP(ch)、NLS_LOWER(ch)、NLS_UPPER(ch)
- 1.7 REGEXP_REPLACE(source, pattern, replace_str, pos, occ, par)
- 1.8 REGEXP_SUBSTR(source, pattern, pos, occ, par)
- 1.9 REPLACE(source, search_str, replace_str)
- 1.10 TRIM(trim_source)、LTRIM(ch)、RTRIM(ch)
- 1.10 未完待续
- 02. 数学函数
- 03. 日期时间函数
编者按
截至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
上一篇: MysqPdo封装