我有一列文字。文本可能包含字符串" var [1]"其中1可以是任何数字。我想增加括号内的数字。因此,如果此列的第一行包含类似的文本:
一些文本后跟var [1],其他文本后跟var [0],最后是var [2]
我的新价值将是
一些文本后跟var [2],其他文本后跟var [1],最后是var [3]
我认为它需要更新像这样的问题替换。 Update a column value, replacing part of a string
我只是不确定如何使用正则表达式来查找和增加数字。
答案 0 :(得分:1)
以下是@xQbert在评论中提到的想法的实现:
mysql> set @v = 'var[1]';
mysql> select concat(substring_index(@v, '[', 1), '[',
substring_index(substring_index(@v, ']', 1), '[', -1)+1,
']', substring_index(@v, ']', -1)) as newv;
+--------+
| newv |
+--------+
| var[2] |
+--------+
此演示使用变量@v
,但您当然可以以相同的方式使用表中的列名。
答案 1 :(得分:1)
同一想法的又一个实现..
select
v,
concat(
left(v,locate('[',v)),
mid(v, locate('[',v)+1, locate(']',v)-locate('[',v)-1)+1,
right(v,length(v)-locate(']',v)+1)) v2
from table1;