【问题标题】:Find number value in string and increment it using replace在字符串中查找数字值并使用替换递增它
【发布时间】:2014-08-11 12:35:20
【问题描述】:

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

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

我的新价值是

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

我认为它需要像这个问题一样使用替换进行更新。 Update a column value, replacing part of a string

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

【问题讨论】:

  • 不要找号码。查找 [ 和 ] 之间的内容。将其转换为数字 add + 1 并将其组合回字符串中。

标签: mysql substring


【解决方案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

【讨论】:

    【解决方案2】:

    这是@xQbert 在 cmets 中提到的想法的实现:

    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,但您当然可以以相同的方式使用表中的列名。

    【讨论】:

      猜你喜欢
      • 2019-04-15
      • 1970-01-01
      • 2022-11-15
      • 2016-01-20
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多