【问题标题】:SQL Regex to select string between second and third forward slashSQL Regex 在第二个和第三个正斜杠之间选择字符串
【发布时间】: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/

【问题讨论】:

    标签: sql regex postgresql amazon-redshift


    【解决方案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 |
      

      【讨论】:

        猜你喜欢
        • 2022-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-02
        • 1970-01-01
        相关资源
        最近更新 更多