我有一个Mysql表名xyz,它具有两列tc_name和tc_path,其中tc_path与/ a/b/c/x/tc_name和tc_name为空。我想要使用此tc_path列值将值插入列(tc_name)中。 我知道它会像我们用其他语言的正则表达式那样做。但是我不知道如何在Mysql中执行此操作。 I信号源功能:根据同一表中的另一列更新表中的列
DELIMITER $$
CREATE FUNCTION `regex_replace`(pattern VARCHAR(1000),replacement VARCHAR(1000),original VARCHAR(1000))
RETURNS VARCHAR(1000)
DETERMINISTIC
BEGIN
DECLARE temp VARCHAR(1000);
DECLARE ch VARCHAR(1);
DECLARE i INT;
SET i = 1;
SET temp = '';
IF original REGEXP pattern THEN
loop_label: LOOP
IF i>CHAR_LENGTH(original) THEN
LEAVE loop_label;
END IF;
SET ch = SUBSTRING(original,i,1);
IF NOT ch REGEXP pattern THEN
SET temp = CONCAT(temp,ch);
ELSE
SET temp = CONCAT(temp,replacement);
END IF;
SET i=i+1;
END LOOP;
ELSE
SET temp = original;
END IF;
RETURN temp;
END$$
我尝试这样做:
update testplans set tc_name=regex_replace('.*/','',tc_path);
应该给我tc_name = d如果tc_path =/A/B/C/d 但相反,它给了我ABCD 。 我使用了错误的功能,或者我不知道如何使用它。 请为它提供一些查询。
请帮忙!!!
感谢
这工作。谢谢 – confused