Mariadb
提取分隔符可能多次出現的子字元串
我有一列具有這種模式的字元串
<email> - <id>
我想只提取電子郵件地址,但這裡的問題是電子郵件地址也可以包含連字元,所以我不能確定分隔符只會出現一次。
所以基本上我想匹配 .* 直到最後一個連字元並將其提取為電子郵件。
嗯,這不完全是關於管理,它是關於編寫一個查詢來提取數據,所以它在數據探勘領域,但是這個論壇完全與數據庫相關,所以我認為它比 stackoverflow 更合適。
我只嘗試過,
SUBSTRING_INDEX()
但最終得到了不好的結果。這是一個生產系統,所以我不能真正干預設計,因此需要提取資訊。
我有一列具有這種模式的字元串-
這就是你最大的問題。
您在一個欄位中有**兩位數據,這從根本上是個壞主意。
在決定如何儲存任何數據之前,您應該問的第一個問題是
我將如何訪問這些數據?
你真的應該在兩個單獨的欄位中擁有它,然後這個“提取”問題就會“消失”。
數據庫非常非常擅長查找少量數據並將它們組合在一起。
他們通常在尋找大量數據並將它們分開時非常垃圾。
向後執行:搜尋子字元串,直到字元串末尾的連字元(使用
SUBSTRING_INDEX
函式),然後從值中修剪找到的部分。如果分隔符嚴格如圖所示(
-
連字元前後有空格),則將其用作三字元分隔符。-秋名