[PostgreSQL] 利用正規表示法取出欄位中值的一部分

[PostgreSQL] 利用正規表示法取出欄位中值的一部分

最近在研究 Perl 的正規表式法,

但沒想到這正規表示法在 PostgreSQL 上也可以使用,而且相當的方便~

 

舉例來說,現在在 tb_setting 這個資料表中,有類似下面的資料:

key value 
conf_type_1_val FTP
conf_type_2_val  HTTP 
conf_type_5_val  SSH 

 

想要一次將 1 ==> FTP, 2 ==> HTTP, 5 ==> SSH 這樣的對應拿出來,要如何做呢?

當然你可以用 SELECT * FROM tb_setting,然後再一個個對 key 做字串處理,

不過~在 PostgreSQL 裡提供了更方便的正規表式法,來做這件事情~

因此,你只要用 SUBSTRING() 搭配正規表式法,就能做好上述的事情囉~

SELECT SUBSTRING(key, ‘([0-9]+)’) AS type, value FROM tb_setting WHERE key LIKE ‘conf_type%%val’

 

執行完後結果就會成為:

type  value 
FTP 
HTTP 
SSH 

 

除了 SUBSTRING(),PostgreSQL 還支援正規表示法用在許多其他的函式上,

可以參考 PostgreSQL: Pattern Matching 囉~

(本頁面已被瀏覽過 40 次)

發表迴響

你的電子郵件位址並不會被公開。