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