【问题标题】:Extract Value from a string PostgreSQL从字符串中提取值 PostgreSQL
【发布时间】:2018-09-08 09:40:14
【问题描述】:

简单的问题

我在字符串字段中有以下类型的结果

'Number=123456'
'Number=1234567'
'Number=12345678'

如何从字符串中提取值,因为值可以在 5-8 个数字之间变化

到目前为止,我这样做了,但我怀疑这是否符合我的要求

SELECT substring('Size' from 8 for ....

如果我可以告诉它从 = 号开始直到结束,那会有所帮助!

【问题讨论】:

    标签: sql postgresql extract


    【解决方案1】:

    您可以使用regexp_matches

    with t(str) as
    (
     select 'Number=123456'   union all 
     select 'Number=1234567'  union all
     select 'Number=12345678' union all
     select 'Number=12345678x9' 
    )
    select t.str  as "String", 
           regexp_matches(t.str, '=([A-Za-z0-9]+)', 'g')  as "Number"
      from t;
    
    String            Number
    --------------    ---------
    Number=123456     123456
    Number=1234567    1234567
    Number=12345678   12345678
    Number=12345678x9 12345678x9 
    --> the last line shows only we look chars after equal sign even if non-digit
    

    Rextester Demo

    【讨论】:

      【解决方案2】:

      另一个适合您的规格(修剪 7 个前导字符)的简单解决方案是使用 right()

      right(str, -7)
      

      演示:

      SELECT str, right(str, -7)
      FROM (
         VALUES ('Number=123456')
              , ('Number=1234567')
              , ('Number=12345678')
         ) t(str);
      
             str       |  right
      -----------------+----------
       Number=123456   | 123456
       Number=1234567  | 1234567
       Number=12345678 | 12345678 
      

      【讨论】:

        【解决方案3】:

        你可以使用REPLACE:

        SELECT col, REPLACE(col, 'Number=', '')
        FROM tab;
        

        DBFiddle Demo

        【讨论】:

          【解决方案4】:

          基于这个问题: Split comma separated column data into additional columns

          您可能会执行以下操作:

          SELECT *, split_part(col, '=', 2)
          FROM table;
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-07-23
            • 1970-01-01
            • 1970-01-01
            • 2014-04-03
            • 2019-01-30
            相关资源
            最近更新 更多