假設我有一列資料型別為 varchar,該列包含與這些類似的值
'My unique id [john3 UID=123]'
'My unique id [henry2 UID=1234]'
'My unique id [tom2 UID=56]'
'My unique id [jerry25 UID=98765]'
如何UID=使用 postgresql僅獲取字串中的數字。例如,在字串中'My unique id [john3 UID=123]'我只想要123,同樣在字串中'My unique id [jerry25 UID=98765]'我只想要98765
PostgreSQL 中有沒有辦法做到這一點?
uj5u.com熱心網友回復:
我們可以REGEXP_REPLACE在這里使用:
SELECT col, REGEXP_REPLACE(col, '.*\[\w UID=(\d )\].*$', '\1') AS uid
FROM yourTable;
演示
編輯:
如果給定值可能與上述模式不匹配,在這種情況下您希望回傳整個原始值,我們可以使用CASE運算式:
SELECT col,
CASE WHEN col LIKE '%[%UID=%]%'
THEN REGEXP_REPLACE(col, '.*\[\w UID=(\d )\].*$', '\1')
ELSE col END AS uid
FROM yourTable;
uj5u.com熱心網友回復:
您還可以使用regexp_matches更短的正則運算式:
select regexp_matches(col, '(?<=UID\=)\d ') from t;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/346724.html
標籤:sql 细绳 PostgreSQL 解析
上一篇:基于字串顯示影像
