如果我有一个结果如下的表:
0001400OL
0578400OL
354085OL
48679OL
,如果我想将以400OL
结尾的最后一个字符替换为ABC
。
我该怎么办?
这是我拥有的select语句,用于显示以400OL
结尾的所有值,可能对任何人都没有用:
select pcode from innerb where pcode like '%400OL';
这是预期的输出:
0001ABC
0578ABC
354085OL
48679OL
答案 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';