新建会话
Ctrl
K
Kimi Code
历史会话
查看手机应用

REGEXP_SUBSTR 用法

oracle 中REGEXP_SUBSTR的用法
I'll search for information about the usage of REGEXP_SUBSTR in Oracle.
搜索
Oracle REGEXP_SUBSTR function usage examples
36 个结果
Oracle 中 REGEXP_SUBSTR 函数用于通过正则表达式从字符串中提取子串。其语法如下:
sql
复制
REGEXP_SUBSTR(
  source_string,      -- 源字符串
  pattern,            -- 正则表达式模式
  position,           -- 起始位置(可选,默认为 1)
  occurrence,         -- 匹配第几次出现的子串(可选,默认为 1)
  match_parameter,    -- 匹配参数(可选,如 'i' 表示忽略大小写)
  subexpr             -- 返回第几个子表达式(可选,0-9)
)

示例说明

1. 提取邮箱地址

sql
复制
SELECT
  REGEXP_SUBSTR('Contact us at [email protected] for help.',
                '[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}') AS Email
FROM DUAL;
-- 结果:[email protected]

2. 提取括号内的内容

sql
复制
SELECT
  REGEXP_SUBSTR('Order #123 (SKU: 45A-B)',
                '\(([^)]+)\)', 1, 1, NULL, 1) AS SKU
FROM DUAL;
-- 结果:SKU: 45A-B

3. 提取数字

sql
复制
-- 提取第一个数字
SELECT REGEXP_SUBSTR('Oracle 23ai', '\d+') FROM DUAL;
-- 结果:23

-- 提取第二个数字
SELECT REGEXP_SUBSTR('Oracle 23ai in 2024', '\d+', 1, 2) FROM DUAL;
-- 结果:2024

4. 提取逗号之间的内容

sql
复制
SELECT
  REGEXP_SUBSTR('500 Oracle Parkway, Redwood Shores, CA',
                ',[^,]+,') AS Result
FROM DUAL;
-- 结果:, Redwood Shores,

参数说明

  • position:从哪个字符开始搜索,默认为 1。
  • occurrence:返回第几次匹配的子串,默认为 1。
  • match_parameter:
    • 'i':忽略大小写
    • 'c':区分大小写(默认)
    • 'n':使 . 匹配换行符
    • 'm':多行模式
  • subexpr:当正则表达式中包含括号分组时,指定返回第几个分组(0 表示整个匹配)。
如果你有具体的使用场景或需求,可以告诉我,我可以帮你写出更贴合的 SQL。