簡體   English   中英

有沒有辦法從MySQL中的正則表達式中提取子匹配?

[英]Is there a way to extract submatches from a regular expression in MySQL?

我知道RLIKEREGEX運算符的存在,但似乎它們不能用於此。

是否有函數或運算符可以幫助我實現拆分文本字段並將其選為兩個或多個單獨的字段:

SELECT $1 as `field_a`, $2 as `field_b` FROM `table` WHERE `field` RLIKE '^(.+):(.+)$';

我正在編寫一個日志分析器,因此在沒有額外的文本處理的情況下在SQL中執行此操作非常方便。

所以你只想在第一次出現“:”時拆分字符串?

在MySQL中有幾種方法可以實現這一點。

使用你的例子,這里有兩種方法。 希望他們對您有所幫助:

select substr(`field`,1,instr(`field`,':')-1) as `field_a`,
  substr(`field`,instr(`field`,':')+1) as `field_b` 
FROM `table` 
WHERE `field` RLIKE '^(.+):(.+)$';

select left(`field`,instr(`field`,':')-1) as `field_a`,
  right(`field`,length(`field`)-instr(`field`,':')) as `field_b` 
FROM `table` 
WHERE `field` RLIKE '^(.+):(.+)$';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM