SQL Regex 在第二个和第三个正斜杠之间选择字符串

Posted

技术标签:

【中文标题】SQL Regex 在第二个和第三个正斜杠之间选择字符串【英文标题】:SQL Regex to select string between second and third forward slash 【发布时间】:2016-02-18 01:42:51 【问题描述】:

我正在使用 Postgres/Redshift 来查询 URL 表并尝试使用 SELECT regex_substr 选择列中第二个和第三个正斜杠之间的字符串。

例如,我需要以下数据中的第二个斜线分隔字符串:

/abc/required_string/5856365/
/abc/required_string/2/
/abc/required_string/l-en/
/abc/required_string/l-en/

遵循this thread 中的一些正则表达式:

SELECT regexp_substr(column, '/[^/]*/([^/]*)/')
FROM table

似乎没有一个工作。我不断得到:

/abc/required_string/
/abc/required_string/

【问题讨论】:

【参考方案1】:

split_part 呢?

SELECT split_part(column, '/', 3) FROM table

例子:

select split_part ('/abc/required_string/2/', '/', 3)

返回:required string

【讨论】:

【参考方案2】:

这可能有效:

SQL Fiddle

PostgreSQL 9.3 架构设置

CREATE TABLE t
    ("c" varchar(29))
;

INSERT INTO t
    ("c")
VALUES
    ('/abc/required_string/5856365/'),
    ('/abc/required_string/2/'),
    ('/abc/required_string/l-en/'),
    ('/abc/required_string/l-en/')
;

查询 1

SELECT substring("c" from '/[^/]*/([^/]*)/')
FROM t

Results

|       substring |
|-----------------|
| required_string |
| required_string |
| required_string |
| required_string |

【讨论】:

以上是关于SQL Regex 在第二个和第三个正斜杠之间选择字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何使用CHARINDEX和SUBSTRING在第二个和第三个“_”之间提取特定文本?

如何使用选择器获取第二个和第三个元素?

PLSQL 在第 N 次和第 M 次出现字符之间选择 substr

如何在不同的列中选择第一个、第二个和第三个值 - Ms Access

单击预览后,如何在我的 React 应用程序上显示第二个和第三个按钮?

Objective C如何根据其他数组项从数组中删除项