自学内容网 自学内容网

【Oracle11g SQL详解】常用字符串函数:`CONCAT`、`SUBSTR`、`LENGTH`、`INSTR` 等

常用字符串函数:CONCATSUBSTRLENGTHINSTR

字符串函数在 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
  • 对于 NULLLENGTH 返回 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. LPADRPAD:填充字符串
  • 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. LOWERUPPER:大小写转换
  • 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 查找子字符串的位置,支持多次出现查找。
  • 其他字符串函数(如 TRIMLPADREPLACE 等)提供了丰富的文本处理能力。

通过灵活使用字符串函数,可以大大简化数据处理过程,提高 SQL 查询的可读性和效率。


原文地址:https://blog.csdn.net/weixin_39372311/article/details/144388721

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!