2013-05-08 45 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