2014-06-20 53 views
1

我有一列文字。該文本可能包含字符串「var [1]」,其中1可以是任意數字。我想增加括號內的數字。所以,如果我的這個包含列文本的第一行,看上去像:查找字符串中的數字值並使用替換將其增加

一些文字,然後變種[1],它還有其他的文本其次變種[0],最後無功[2]

我的新的價值會是

一些文字,然後變種[2]還有其他的文本其次變種[1],最後變種[3]

我假定這將需要更新與更換這樣的問題。 Update a column value, replacing part of a string

我只是不確定如何使用正則表達式來查找和增加數字。

+2

不找數。尋找[和]之間的內容。將其轉換爲數字加+ 1並將其合併回字符串中。 – xQbert

回答

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

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,但你當然可以以同樣的方式使用列名的表。

相關問題