一、字符函数
1. UPPER(str): 将字符串str中的所有字母转换为大写;
例:
SELECT
EMPLOYEE_ID , FIRST_NAME , UPPER(FIRST_NAME)
FROM employees emp FETCH FIRST 5 ROWS ONLY;
EMPLOYEE_ID FIRST_NAME UPPER(FIRST_NAME)
----------- -------------------- --------------------
174 Ellen ELLEN
166 Sundar SUNDAR
130 Mozhe MOZHE
105 David DAVID
204 Hermann HERMANN
2. LOWER(str): 将字符串str中的所有字母转换为小写;
例:
SELECT
EMPLOYEE_ID , FIRST_NAME , LOWER(FIRST_NAME)
FROM employees emp FETCH FIRST 5 ROWS ONLY;
EMPLOYEE_ID FIRST_NAME LOWER(FIRST_NAME)
----------- -------------------- --------------------
174 Ellen ellen
166 Sundar sundar
130 Mozhe mozhe
105 David david
204 Hermann hermann
3. INITCAP(str): 将字符串str中的每个单词的首字母改为大写
例:
SELECT
EMPLOYEE_ID , JOB_ID , INITCAP(JOB_ID) AS "Job_Id"
FROM employees emp FETCH FIRST 5 ROWS ONLY;
EMPLOYEE_ID JOB_ID Job_Id
----------- ---------- ----------
206 AC_ACCOUNT Ac_Account
205 AC_MGR Ac_Mgr
200 AD_ASST Ad_Asst
100 AD_PRES Ad_Pres
101 AD_VP Ad_Vp
4. CONCAT(str1 , str2): 将字符串str1和str2做字符串连接
注意:在Oracle中,CONCAT(str1 , str2) 函数仅支持两个参数
例:
SELECT
EMPLOYEE_ID ,concat(CONCAT(FIRST_NAME, ' ') , LAST_NAME) FULL_NAME
FROM employees emp FETCH FIRST 5 ROWS ONLY;
EMPLOYEE_ID FULL_NAME
----------- ----------------------------------------------
100 Steven King
101 Neena Kochhar
102 Lex De Haan
103 Alexander Hunold
104 Bruce Ernst
5. SUBSTR(str,pos[,length]): 将字符串str从第pos个字符开始,截取length个字符长度。
注意:length参数可以省略,表示截取到字符串str的末尾
例:
SELECT SUBSTR('ABCDEFG',3,3) FROM DUAL;
SUB
---
CDE
SELECT SUBSTR('ABCDEFG',3) FROM DUAL;
SUBST
-----
CDEFG
6. LPAD(str,length,str1): 将字符串str用str1从左边填充到length个字符
RPAD(str,length,str2): 将字符串str用str2从右边填充到length个字符
例:
SQL> SELECT LPAD('BCD' , 5 , 'A') FROM dual;
LPAD('BCD' , 5 , 'A')
-----
AABCD
SQL> SELECT RPAD('BCD', 6 ,'EF') FROM dual;
RPAD('BCD', 6 ,'EF')
------
BCDEFE
7. TRIM(str)/LTRIM(str)/RTRIM(str): 去掉字符串str两端/最左边/最右边的空格
例:
SELECT TRIM(' ABC ') , LENGTH(' ABC ') , LENGTH(TRIM(' ABC ') ) FROM dual;
TRI LENGTH('ABC') LENGTH(TRIM('ABC'))
--- ------------- -------------------
ABC 12 3
SELECT LTRIM(' ABC ') , LENGTH(' ABC ') , LENGTH(LTRIM(' ABC ') ) FROM dual;
LTRIM(' LENGTH('ABC') LENGTH(LTRIM('ABC'))
------- ------------- --------------------
ABC 12 7
SELECT RTRIM(' ABC ') , LENGTH(' ABC ') , LENGTH(RTRIM(' ABC ') ) FROM dual;
RTRIM('A LENGTH('ABC') LENGTH(RTRIM('ABC'))
-------- ------------- --------------------
ABC 12 8
8. REPLACE(str,str1,str2): 将字符串str中,能用str1匹配的部分替换为str2
例:
SQL> SELECT REPLACE('ABCAAAA','AA','BC') FROM dual;
REPLACE('ABCAAAA','AA','BC')
-------
ABCBCBC
9. INSTR(str,str1[,index][,num]): 返回字符串str中,从第index个字符开始,str1第num次出现的时的位置;与MySQL中的LOCATE函数作用相似
例:
SQL> SELECT INSTR('ABCAAAA','AA') FROM dual;
INSTR('ABCAAAA','AA')
---------------------
4
SQL> SELECT INSTR('ABCAAAA','AA',5) FROM dual;
INSTR('ABCAAAA','AA',5)
-----------------------
5
SQL> SELECT INSTR('ABCAAAA','AA',5,2) FROM dual;
INSTR('ABCAAAA','AA',5,2)
-------------------------
6
10. LENGTH(str)/LENGTHB(str): 返回字符串str的字符/字节长度
注意:ORACLE的LENGTH(str)函数需要和MySQL中的LENGTH(str)做区分
字节长度 字符长度
ORACLE LENGTHB(str) LENGTH(str)
MySQL LENGTH(str) CHAR_LENGTH(str)
例:
SQL> SELECT LENGTH('字符长度') FROM dual;
LENGTH('字符长度')
------------------
4
SQL> SELECT LENGTH('Character_length') FROM dual;
LENGTH('CHARACTER_LENGTH')
--------------------------
16
SQL> SELECT LENGTHB('字节长度') FROM dual;
LENGTHB('字节长度')
-------------------
12
SQL> SELECT LENGTHB('Byte_length') FROM dual;
LENGTHB('BYTE_LENGTH')
----------------------
11
11. REGEXP_COUNT(str,regexp [, pos ][, match_param]): 返回字符串str中,从第pos个字符开始,在match_param形式下,符合正则表达式regexp的子串的个数
其中:
match_param的参数值有:
‘i’ 用于不区分大小写的匹配
‘c’ 用于区分大小写的匹配
‘x’ 忽略空格字符。默认情况下,空格字符与自身相匹配。
‘n’ 允许句点(.)作为通配符去匹配换行符。如果省略该参数,则句点将不匹配换行符
‘m’ 将源串视为多行。即Oracle 将^和$分别看作源串中任意位置任何行的开始和结束,而不是仅仅看作整个源串的开始或结束。如果省略该参数,则Oracle将源串看作一行。
例:
SQL>
SQL> SELECT REGEXP_COUNT('123123123123', '123', 7 ) FROM dual;
REGEXP_COUNT('123123123123','123',7)
------------------------------------
2