-1
我有一次替换不正确的多个数据,所以我用了preg_replace,但我坚持,因为它只是在风格上的拼写错误更换。有多种不同的错误样式,我想用一种标准样式替换它们中的所有样式,所以我使用了一个游标。但它给了我一个语法错误。我被困在MySQL存储过程
我重视我的查询。
CREATE PROCEDURE addcorrect()
BEGIN
DECLARE ADDRESS char(90);
DECLARE badaddress CURSOR FOR
SELECT
supplementtal_address_1
FROM aditi_po
WHERE ((
UPPER(street_name) LIKE '%P%BOX%'
OR UPPER(supplementtal_address_1) LIKE 'P%BOX%'
)
AND id NOT IN (
SELECT id
FROM aditi_po
WHERE (street_name LIKE '%PO %Box%'
or supplementtal_address_1 LIKE '%PO %Box%')
));
OPEN badaddress
read_loop: LOOP
FETCH badaddress INTO ADDRESS;
IF done THEN
LEAVE read_loop;
END IF;
if ADDRESS LIKE '%P.O. Box%' THEN
print ADDRESS = PREG_REPLACE('/(.*?)(P.O. Box)/' , '$1PO Box' ,ADDRESS)
ELSE ADDRESS LIKE '%P.O. Box%' THEN print ADDRESS = PREG_REPLACE('/(.*?)(P.O. Box)/' , '$1PO Box' ,ADDRESS)
END IF;
END LOOP;
CLOSE badaddress;
END;
MySQL表示:
#1064 - 你在你的SQL语法错误;检查对应于你的MySQL服务器版本的在线使用近“”正确的语法手册3
所以注释掉部件直到错误消失。然后你要么自己发现问题,要么有一个“真正的”SO问题。 (这里有太多需要解决的问题,这是一个“修复我的代码”的评论。)希望你在CLI或类似的地方尝试它。 – 2012-07-25 17:03:25
其实我也试过这种方式,但它不工作,我想知道我错在哪里。 – user1552328 2012-07-25 17:27:12
尝试在第1行末尾添加一个';'。 – Sablefoste 2012-07-25 17:41:43