[英]SQL count regex matches (PostgreSQL)
我想從表中計算正則表達式實例。 例如:
message state ================================ [foo] aaaa active [bar] aaaa idle [foo] bbbb idle [foo] cccc active [bar] dddd active [tar] eeee idle
我想擁有的是:
messageType ocurrences ==================================== [foo] 3 [bar] 2 [tar] 1
有什么辦法嗎? 任何幫助將不勝感激!
如果您只想計算消息中的第一個“單詞”,請使用substring_index()
:
select substring_index(message, ' ', 1) as messageType, count(*)
from table t
group by substring_index(message, ' ', 1)
order by count(*) desc;
編輯:
您可以在Postgres中查找第一個空格來執行此操作:
select left(message, position(' ' in message) as messageType, count(*)
from table t
group by messageType
order by count(*) desc;
就像上面的響應一樣,但帶有Postgres版本:
select regexp_matches(message, '\[.+\]') as messageType, count (*) from table1 group by regexp_matches(message, '\[.+\]') order by count (*) desc;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.