我希望有人可以帮助我。我有一个160.000行的列。很多这些列值(永久链接)以“-2”结尾,这是不必要的,所以我想删除它们。但我无法让它发挥作用。
我使用以下查询尝试了它:
UPDATE wp_pods_cars
SET permalink = Replace(permalink,'-2','')
WHERE RIGHT( 'permalink' , 2 ) = '-2';
此查询似乎有效,但RIGHT()似乎会产生麻烦。可能它只能用于SELECT而不是WHERE子句。
我在考虑正则表达式,但我也没有这样做。我已经无法为我的案例找到合适的正则表达式。
答案 0 :(得分: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
可能会出现在字符串中的其他位置,您不希望删除所有匹配项。
答案 1 :(得分:0)
首先根据Oleg的评论从列名中删除引号。这可能是符合您标准的另一个解决方案,MySQL SUBSTRING
函数提取字符串的一部分,CHAR_LENGTH
函数计算的数量字符串中的字符&最后将其分配给permalink
。
UPDATE wp_pods_cars
SET permalink = SUBSTRING(permalink, 1, CHAR_LENGTH(permalink) - 2)
WHERE permalink LIKE '%-2';
更多关于: