[英]MySQL: Use REGEX to extract all matches from one records
我嘗試提取字符串中的所有標記並將其添加到mysql中的新列中,例如:
string :
hello #name# , current time is : #time# and today is : #today_date#
output :
#name#
#time#
#today_date#
我想搜索所有行以查找表中的text
列,並使用輸出結果更新tags_list
列
查找所有帶有標簽的行,我們可以在此查詢中使用
SELECT `text` FROM 'table' WHERE `text` REGEXP '#.*#'
但是如何提取所有行軍並用輸出結果更新tags_list
列?
BEGIN
DECLARE tags_list varchar(2000) ;
DECLARE tags varchar(800) ;
SET @start_loc := 1;
SET @start_pos := -1;
SET @end_pos := -1;
SET @total_len = LENGTH(str);
WHILE @start_loc < @total_len
DO
SET @start_pos := LOCATE('#',str,@start_loc);
SET @end_pos := LOCATE('#',str,@start_pos+1 );
IF @start_pos > 1 AND @end_pos > 0 THEN
SET @len = @end_pos - @start_pos + 1;
SET tags := SUBSTRING(str, @start_pos, @len);
IF tags_list IS NULL THEN
SET tags_list := tags;
ELSE
set tags_list := CONCAT_WS("
", tags_list, tags);
END IF;
SET @start_loc := @end_pos+1;
ELSE
SET @start_loc := @total_len+1;
END IF;
END WHILE;
IF tags_list IS NULL THEN
SET tags_list := '';
END IF;
RETURN tags_list;
END
然后用於更新列
UPDATE `table` SET `tags_list`= func_name(`text`)
也許對某人有用...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.