標籤:
項目中用到的,要判斷表中某個欄位的某幾位,若為某個值則替換,用到了幾個典型的字串操作,記錄備忘實現方案如下:
備忘:如果替代字串是唯一的話,可以用replace,這裡用的是concat拼接。
DELIMITER //DROP PROCEDURE IF EXISTS p_modify_year;CREATE PROCEDURE p_modify_year()BEGIN DECLARE tmpid int(8); DECLARE tmppcidd varchar(20); DECLARE tmpprocode varchar(20); DECLARE done INT DEFAULT FALSE; DECLARE cur CURSOR FOR SELECT product.id FROM product WHERE prostatus=0; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cur; myloop: LOOP FETCH cur INTO tmpid; IF done THEN LEAVE myloop; END IF; SELECT SUBSTRING(product.pcidd,2,2), product.procode INTO tmppcidd, tmpprocode FROM product WHERE id = tmpid;
//pcidd和procode中第2、3位為16則替換成AU,其中procode可能為空白。 IF tmppcidd = ‘16‘ THEN UPDATE upe_product set pcidd = CONCAT(SUBSTRING(pcidd, 1, 1), ‘AU‘, SUBSTRING(pcidd, 4, LENGTH(pcidd)+1)) WHERE id = tmpid; IF !ISNULL(tmpprocode) THEN UPDATE product set procode = CONCAT(SUBSTRING(procode, 1, 1), ‘AU‘, SUBSTRING(procode, 4, LENGTH(procode)+1)) WHERE id = tmpid; END IF; END IF; SET tmpprocode = NULL; SET tmppcidd = NULL; SET done = FALSE; END LOOP; CLOSE cur; END//
mysql字串處理例子