【问题标题】:Extract a specific word from string in PostgreSQL从 PostgreSQL 中的字符串中提取特定单词
【发布时间】:2013-05-08 19:44:51
【问题描述】:

我正在使用 pgadmin 版本 1.16.1,我需要从中提取单词“登录”和“注销” 结果列

url

"http:/login-v1.abcd.com/service/abc/integration" 
"http:/xxxxxxxxlogout"
"https:/login-v1.abcd.com/service" 

结果

 url                                                 Action  

"http:/login-v1.abcd.com/service/abc/integration"    login 
 "http:/xxxxxxxxlogout"                              logout
"https:/login-v1.abcd.com/service"                   login

我该怎么做?

【问题讨论】:

  • 客户端和版本(pgAdmin 1.16.1)与这个问题无关。但为了安全起见,提及它们总是一个好主意。 Postgres 的版本相关的,但你忘记了。
  • 我使用的是 postgreSQL 9.2.2
  • 您为什么不向我们展示您的尝试?
  • 我尝试使用 substring('login' from mp_logs.url),但没有得到任何结果。当我使用 substring(mp_logs.url from 8 for 5) 时,我得到了登录结果,但是当出现“login..”时,我需要再次将其更改为 substring(mp_logs.url from 9 for 5),因为https中的“s”..所以我不知道如何继续

标签: regex string postgresql pattern-matching extract


【解决方案1】:

substring() 与正则表达式一起使用:

WITH t(txt) AS (VALUES 
     ('http:/login-v1.abcd.com/service/abc/integration')
    ,('http:/xxxxxxxxlogout')
    ,('https:/login-v1.abcd.com/service')
    )
SELECT txt, substring(txt FROM '(login|logout)') AS action FROM t

【讨论】:

  • @user2212872:请注意,这会在字符串中找到 first 匹配项。如果可以有多个匹配项,则必须定义要执行的操作...
  • 该列中的所有 url 只有一次登录/注销。所以这暂时有效。如果我需要,将来会改变它。再次感谢您。
猜你喜欢
  • 1970-01-01
  • 2021-07-28
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 2022-11-21
  • 2020-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多