我希望有人能帮助我。我有一个有160000行的列。很多列值(permalinks)以“-2”结尾,这是不必要的,所以我想删除它们。但我不能让它工作。
我试着问了一下:

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

此查询似乎有效,但右边的()似乎有问题。可能它只能用于SELECT,而不能用于WHERE子句。
我在想Regex,但我也没能成功。我已经找不到适合我的情况的正则表达式。

最佳答案

列名周围有单引号,因此要比较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可能出现在字符串的其他位置,您不希望删除所有出现的项。

08-04 22:23