MYSQL用char的条件替换字符串的一部分是数字

时间:2017-07-31 06:11:54

标签: mysql

需要帮助,因为我对如何设置查询更新感到困惑。

我想将10x的匹配项替换为20x,其中x必须是数字。数字编号也可以出现在任何位置。并且数字出现的前两个数字必须是10

例如:tableA - 在字段colA处有以下内容:

TOK101s
102YUZ
TAIP103v
ECC10
ECC10a
SCC_103
TD-102b
ZA1104z

查询更新后的结果应为:

TOK201s
202YUZ
TAIP203v
ECC10
ECC10a
SCC_203
TD-202b
ZA1104z

ECC10ECC10a不应该更新,因为10之后的第3个字符不是数字值。

不应更新

ZA1104z,因为数字字符串1104不以10开头。

1 个答案:

答案 0 :(得分:0)

感谢Barmar和Misaka: SQL: search/replace but only the first time a value appears in record

update tableA set colA = IF(INSTR(colA, '10') <> 0, CONCAT(LEFT(colA, INSTR(colA, '10') - 1), '20', SUBSTRING(colA FROM INSTR(colA, '10') + CHAR_LENGTH('10'))), colA) where colA REGEXP  '(^|[^0-9])10[0-9]'

以上帮助我得到了我想要的东西。

相关问题