Mariadb

提取分隔符可能多次出現的子字元串

  • June 9, 2022

我有一列具有這種模式的字元串<email> - <id>

我想只提取電子郵件地址,但這裡的問題是電子郵件地址也可以包含連字元,所以我不能確定分隔符只會出現一次。

所以基本上我想匹配 .* 直到最後一個連字元並將其提取為電子郵件。

嗯,這不完全是關於管理,它是關於編寫一個查詢來提取數據,所以它在數據探勘領域,但是這個論壇完全與數據庫相關,所以我認為它比 stackoverflow 更合適。

我只嘗試過,SUBSTRING_INDEX()但最終得到了不好的結果。

這是一個生產系統,所以我不能真正干預設計,因此需要提取資訊。

我有一列具有這種模式的字元串-

這就是你最大的問題。

您在一個欄位中有**兩位數據,這從根本上是個壞主意。

在決定如何儲存任何數據之前,您應該問的第一個問題是

我將如何訪問這些數據?

你真的應該在兩個單獨的欄位中擁有它,然後這個“提取”問題就會“消失”。

數據庫非常非常擅長查找少量數據並將它們組合在一起。

他們通常在尋找大量數據並將它們分開時非常垃圾。

向後執行:搜尋子字元串,直到字元串末尾的連字元(使用SUBSTRING_INDEX函式),然後從值中修剪找到的部分。

如果分隔符嚴格如圖所示(-連字元前後有空格),則將其用作三字元分隔符。-秋名

引用自:https://dba.stackexchange.com/questions/313122