2013-05-08 44 views
-2

我使用的pgAdmin版本1.16.1提取特定单词,我需要从 结果列中提取的话“登录”和“注销”从字符串中PostgreSQL的

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 

我该怎么做?

+1

客户端和版本(1.16.1 pgAdmin的)是不相关的这个问题。但为了安全,提及它们总是一个好主意。 Postgres *的版本*是相关的,但你忘记了这一点。 – 2013-05-08 19:59:58

+0

我使用的是PostgreSQL 9.2.2 – user2212872 2013-05-08 20:02:45

+1

为什么你不告诉我们你试过了什么? – fotanus 2013-05-08 20:04:54

回答

3

使用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 
+0

非常感谢。有效!! – user2212872 2013-05-08 20:16:40

+0

@ user2212872:请注意,这会在字符串中找到* first *匹配项。如果可以有多个匹配项,则必须定义您想要执行的操作... – 2013-05-08 20:24:30

+0

列中的所有URL只有一次登录/注销事件。所以这个工作现在。如果我需要,将来会改变它。再次感谢你。 – user2212872 2013-05-08 20:28:15