我尝试在字符串中提取所有标记并将它们添加到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
列?
答案 0 :(得分:0)
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`)
可能对某人有用......