2015-05-23 74 views
1

我希望有人能幫助我。我有一列有160.000行的列。很多這些列值(永久鏈接)以「-2」結尾,這是不必要的,所以我想刪除它們。但我無法讓它工作。SQL如果最後2個字符匹配,則替換最後2個字符

我用下面的查詢試了一下:

UPDATE wp_pods_cars 
SET permalink = Replace(permalink,'-2','') 
WHERE RIGHT('permalink' , 2) = '-2'; 

該查詢似乎是有效的,但RIGHT()似乎鬧事。可能它只能用於SELECT而不用於WHERE子句。

我正在考慮正則表達式,但我沒有得到那個工作。我已經無法爲我的案例找到正確的正則表達式。

+1

您應該刪除在'RIGHT'受理報價,因爲 '永久' 是一個字符串,而不是你列引用。 –

回答

1

您在列名稱周圍有單引號,因此您要比較where子句中的常量字符串。這更接近使用的版本是:

UPDATE wp_pods_cars 
    SET permalink = Replace(permalink,'-2','') 
    WHERE RIGHT(permalink, 2) = '-2'; 

不過,我會寫爲:

UPDATE wp_pods_cars 
    SET permalink = LEFT(permalink, length(permalink) - 2) 
    WHERE permalink LIKE '%-2'; 

-2可能出現在字符串中的其他地方,你不想刪除所有發生。

0

首先刪除列名的報價爲每評論由奧列格。這可能是您的標準另一種解決方案,MySQL的SUBSTRING函數提取字符串的一部分,CHAR_LENGTH函數計算字符的字符串&的數量最終分配它到permalink

UPDATE wp_pods_cars 
    SET permalink = SUBSTRING(permalink, 1, CHAR_LENGTH(permalink) - 2) 
WHERE permalink LIKE '%-2'; 

更多關於:

SUBSTRING

CHAR_LENGTH

相關問題