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

时间:2016-02-18 01:42:51

标签: sql regex postgresql amazon-redshift

我正在使用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/

2 个答案:

答案 0 :(得分: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 |

答案 1 :(得分:2)

split_part怎么样?

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

示例:

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

返回:required string