在字符串中查找数字值并使用replace增加它

时间:2014-06-20 17:22:37

标签: mysql substring

我有一列文字。文本可能包含字符串" var [1]"其中1可以是任何数字。我想增加括号内的数字。因此,如果此列的第一行包含类似的文本:

一些文本后跟var [1],其他文本后跟var [0],最后是var [2]

我的新价值将是

一些文本后跟var [2],其他文本后跟var [1],最后是var [3]

我认为它需要更新像这样的问题替换。 Update a column value, replacing part of a string

我只是不确定如何使用正则表达式来查找和增加数字。

2 个答案:

答案 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;

fiddle