I have a table. In one of the columns of the table , the values have this form:
Value1(12) Value2(45) Value3(35) Value4(37) Value5(17)
How to delete the opening parenthesis, the value inside the parentheses and the closing parenthesis? So that after updating the values would take this form:
Value1 Value2 Value3 Value4 Value5
P.s: It seems that regular expressions will help here, but how to form a query with them?
CodePudding user response:
Use regexp_replace
in an update
.
update some_table
set some_column = regexp_replace(some_column, '\\([^)]*\\)', '')
That says to replace anything between ()
that isn't )
, including the ()
.
Note that (
and )
have special meaning in a regex so they must be escaped with a \
. \\
is required because \
is also the string escape character. '\('
becomes '('
and the escaping is lost. '\\('
becomes '\('
and the escape is passed along to the regex.
CodePudding user response:
The simplest way is to use REGEXP_REPLACE
which is supported on all mysql 8.0
and above versions.
UPDATE mDemo SET value = REGEXP_REPLACE(value, '[(][0-9]{2,}[)]', '')
Explaination:
[(][0-9]{2,}[)]
This basically looks for a (two digits or above)
and replaces it with an empty string, thus giving you the desired result.