実現したいこと
ZabbixのアイテムのヒストリをSQLで出力させてます。以下の条件のもと文字列を抽出する方法はありますか?
REGEXP_REPLACEをつかいましたが、理想の結果になりません。
・「@」の前を抽出。
・「@」が無い場合は、すべて抽出。
恐れ入りますが、ご教示お願いします。
[バージョン]
MariaDB:10.5.10
zabbix:5.0
sql
SELECT zabbix.history_str.value AS 'address' FROM zabbix.history_str LEFT JOIN zabbix.items USING(itemid) WHERE from_unixtime(zabbix.history_str.clock) BETWEEN '2022-01-02T17:46' AND '2022-03-05T18:46'; #出力結果 +--------------------------------------------------------------------------------------------+ |address | +--------------------------------------------------------------------------------------------+ | 123@gmail.com|google|メール|123支店 | | 456@yahoo.co.jp|yahoo|メール|456支店 | | 789|google|| | | cat@gmail.com|google|メール|cat支店 | | dog@yahoo.co.jp|yahoo|メール|dog支店 | | tiger|yahoo|| | +--------------------------------------------------------------------------------------------+ SELECT REGEXP_REPLACE(zabbix.history_str.value, '@.+','') AS 'address' FROM zabbix.history_str LEFT JOIN zabbix.items USING(itemid) WHERE from_unixtime(zabbix.history_str.clock) BETWEEN '2022-01-02T17:46' AND '2022-03-05T18:46'; #出力結果 +--------------------------------------------------------------------------------------------+ |address | +--------------------------------------------------------------------------------------------+ | 123 | | 456 | | 789|google|| | | cat | | dog | | tiger|yahoo|| | +--------------------------------------------------------------------------------------------+
理想の結果
sql
+-----------------------+ | 123 | | 456 | | 789 | | cat | | dog | | tiger | +-----------------------+
まだ回答がついていません
会員登録して回答してみよう