常用字符串函数:CONCAT
、SUBSTR
、LENGTH
、INSTR
等
字符串函数在 SQL 中被广泛用于处理文本数据,例如拼接字符串、提取子串、查找字符位置等。Oracle 11g 提供了强大的字符串函数,可以简化对字符串的操作。
一、CONCAT
:拼接字符串
1. 功能
CONCAT
函数用于将两个字符串拼接成一个字符串。
2. 语法
CONCAT(string1, string2)
3. 示例
SELECT CONCAT('Hello', ' World') AS result
FROM dual;
-- 结果:Hello World
注意:
- 若需要拼接多个字符串,可以使用双竖线
||
操作符:SELECT 'First' || ' Second' || ' Third' AS result FROM dual; -- 结果:First Second Third
二、SUBSTR
:提取子字符串
1. 功能
SUBSTR
用于从字符串中提取指定位置的子串。
2. 语法
SUBSTR(string, start_position, length)
string
:要操作的字符串。start_position
:起始位置(从 1 开始,负数表示从末尾开始)。length
(可选):子串长度。如果省略,将提取到字符串末尾。
3. 示例
SELECT SUBSTR('Oracle SQL', 8, 3) AS result
FROM dual;
-- 结果:SQL
使用负数的起始位置:
SELECT SUBSTR('Oracle SQL', -3, 3) AS result
FROM dual;
-- 结果:SQL
三、LENGTH
:获取字符串长度
1. 功能
LENGTH
用于返回字符串的字符数。
2. 语法
LENGTH(string)
3. 示例
SELECT LENGTH('Oracle SQL') AS result
FROM dual;
-- 结果:10
空字符串与 NULL 的区别:
- 对于
''
(空字符串),LENGTH
返回0
。 - 对于
NULL
,LENGTH
返回NULL
。
四、INSTR
:查找字符位置
1. 功能
INSTR
用于查找指定子字符串在目标字符串中的位置。
2. 语法
INSTR(string, substring, start_position, occurrence)
string
:要搜索的目标字符串。substring
:要查找的子字符串。start_position
(可选):开始搜索的位置,默认为 1。occurrence
(可选):第几次出现的位置,默认为 1。
3. 示例
SELECT INSTR('Oracle SQL', 'SQL') AS result
FROM dual;
-- 结果:8
查找第二次出现的位置:
SELECT INSTR('Oracle SQL SQL', 'SQL', 1, 2) AS result
FROM dual;
-- 结果:12
五、其他常用字符串函数
1. TRIM
:去除首尾空格或指定字符
SELECT TRIM(' Oracle SQL ') AS result
FROM dual;
-- 结果:Oracle SQL
2. LPAD
和 RPAD
:填充字符串
LPAD
在字符串左侧填充指定字符:SELECT LPAD('123', 5, '0') AS result FROM dual; -- 结果:00123
RPAD
在字符串右侧填充指定字符:SELECT RPAD('123', 5, '0') AS result FROM dual; -- 结果:12300
3. REPLACE
:替换字符串
SELECT REPLACE('Oracle SQL', 'SQL', 'PL/SQL') AS result
FROM dual;
-- 结果:Oracle PL/SQL
4. LOWER
和 UPPER
:大小写转换
LOWER
将字符串转换为小写:SELECT LOWER('Oracle SQL') AS result FROM dual; -- 结果:oracle sql
UPPER
将字符串转换为大写:SELECT UPPER('Oracle SQL') AS result FROM dual; -- 结果:ORACLE SQL
5. INITCAP
:单词首字母大写
SELECT INITCAP('oracle sql functions') AS result
FROM dual;
-- 结果:Oracle Sql Functions
六、综合实例
1. 拼接并提取子串
将员工姓名拼接成“姓·名”的格式,提取姓氏的前两个字母:
SELECT
CONCAT(last_name, '.' || SUBSTR(first_name, 1, 1)) AS formatted_name,
SUBSTR(last_name, 1, 2) AS surname_abbreviation
FROM employees
WHERE department_id = 10;
2. 查找特定字符串并替换
从员工记录中查找包含 “Manager” 的职位,替换为 “Leader”:
SELECT
job_title,
REPLACE(job_title, 'Manager', 'Leader') AS updated_title
FROM jobs
WHERE INSTR(job_title, 'Manager') > 0;
七、小结
CONCAT
用于拼接两个字符串,多个字符串拼接可用||
。SUBSTR
提取子字符串,支持正负起始位置。LENGTH
返回字符串长度,区分空字符串与 NULL。INSTR
查找子字符串的位置,支持多次出现查找。- 其他字符串函数(如
TRIM
、LPAD
、REPLACE
等)提供了丰富的文本处理能力。
通过灵活使用字符串函数,可以大大简化数据处理过程,提高 SQL 查询的可读性和效率。