我正在使用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/
答案 0 :(得分:2)
这可能有效:
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