-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