如果我有一个带有这样的结果的表:
0001400OL
0578400OL
354085OL
48679OL
,如果我想将以400OL
结束的最后一个字符替换为ABC
。我该怎么做?
这是我拥有的选择语句,以显示以400OL
结尾的所有值对任何人都没有用:
select pcode from innerb where pcode like '%400OL';
这是一个预期的输出:
0001ABC
0578ABC
354085OL
48679OL
您要寻找的是替换函数,然后您应该做这样的事情:
SELECT REPLACE(pcode, '400OL', 'ABC') FROM innerb WHERE pcode like '%400OL';
例如,如果要更新WHERE
子句上匹配的这些值,请运行下一个语句:
UPDATE innerb
SET pcode = REPLACE(pcode, '400OL', 'ABC')
WHERE pcode like '%400OL';
请勿使用REPLACE()
!而是:
UPDATE innerb
SET pcode = CONCAT(LEFT(pcode, LENGTH(pcode) - 5), 'ABC')
WHERE pcode LIKE '%400OL';
REPLACE()
的问题在于它替换了搜索的字符串出现。您只想替换最后一个,所以只更改一个。
我相信这将做到:
UPDATE innerb
SET pcode = REPLACE(pcode, '400OL', 'ABC')
WHERE pcode LIKE '%400OL';