実現したいこと
ZabbixのアイテムのヒストリをSQLで出力させてます。以下の条件のもと文字列を抽出する方法はありますか?
REGEXP_REPLACEをつかいましたが、理想の結果になりません。
・「@」の前を抽出。
・「@」が無い場合は、すべて抽出。
恐れ入りますが、ご教示お願いします。
[バージョン]
MariaDB:10.5.10
zabbix:5.0
sql
1SELECT zabbix.history_str.value AS 'address' 2FROM 3 zabbix.history_str 4 LEFT JOIN zabbix.items USING(itemid) 5WHERE from_unixtime(zabbix.history_str.clock) BETWEEN '2022-01-02T17:46' AND '2022-03-05T18:46'; 6 7 8#出力結果 9+--------------------------------------------------------------------------------------------+ 10|address | 11+--------------------------------------------------------------------------------------------+ 12| 123@gmail.com|google|メール|123支店 | 13| 456@yahoo.co.jp|yahoo|メール|456支店 | 14| 789|google|| | 15| cat@gmail.com|google|メール|cat支店 | 16| dog@yahoo.co.jp|yahoo|メール|dog支店 | 17| tiger|yahoo|| | 18+--------------------------------------------------------------------------------------------+ 19 20SELECT REGEXP_REPLACE(zabbix.history_str.value, '@.+','') AS 'address' 21FROM 22 zabbix.history_str 23 LEFT JOIN zabbix.items USING(itemid) 24WHERE from_unixtime(zabbix.history_str.clock) BETWEEN '2022-01-02T17:46' AND '2022-03-05T18:46'; 25 26#出力結果 27+--------------------------------------------------------------------------------------------+ 28|address | 29+--------------------------------------------------------------------------------------------+ 30| 123 | 31| 456 | 32| 789|google|| | 33| cat | 34| dog | 35| tiger|yahoo|| | 36+--------------------------------------------------------------------------------------------+ 37 38
理想の結果
sql
1+-----------------------+ 2 3| 123 | 4| 456 | 5| 789 | 6| cat | 7| dog | 8| tiger | 9+-----------------------+
回答3件
あなたの回答
tips
プレビュー