我有一個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