需要帮助,因为我对如何设置查询更新感到困惑。
我想将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
ECC10
和ECC10a
不应该更新,因为10
之后的第3个字符不是数字值。
ZA1104z
,因为数字字符串1104不以10
开头。
答案 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]'
以上帮助我得到了我想要的东西。