mysql更新值以另一个结尾结尾

时间:2019-03-22 14:29:56

标签: mysql sql

如果我有一个结果如下的表:

0001400OL
0578400OL
354085OL
48679OL

,如果我想将以400OL结尾的最后一个字符替换为ABC。 我该怎么办?

这是我拥有的select语句,用于显示以400OL结尾的所有值,可能对任何人都没有用:

select pcode from innerb where pcode like '%400OL';

这是预期的输出:

0001ABC
0578ABC
354085OL
48679OL

3 个答案:

答案 0 :(得分:0)

您正在寻找的是REPLACE函数,那么您应该这样做:

SELECT REPLACE(pcode, '400OL', 'ABC') FROM innerb WHERE pcode like '%400OL';

例如,如果要更新与WHERE子句匹配的这些值,请运行下一条语句:

UPDATE innerb 
SET pcode = REPLACE(pcode, '400OL', 'ABC') 
WHERE pcode like '%400OL';

答案 1 :(得分:0)

请勿使用REPLACE()!相反:

UPDATE innerb
    SET pcode = CONCAT(LEFT(pcode, LENGTH(pcode) - 5), 'ABC')
    WHERE pcode LIKE '%400OL';

REPLACE()的问题在于,它替换了所有个搜索字符串。您只想替换最后一个,所以只更改那一个。

答案 2 :(得分:-1)

我相信这可以做到:

UPDATE innerb
SET pcode = REPLACE(pcode, '400OL', 'ABC')
WHERE pcode LIKE '%400OL';