如何使用正则表达式更新表行 - Mysql

时间:2017-03-21 20:45:28

标签: mysql sql mysqli

我有一个像这样的行的表:

|column A                              |

|normal data 1 (some data to remove 1) |
|normal data 2 (some  data to remove 2)|
|normal data 3 (some  data to remove 3)|
|normal data 4 (some  data to remove 4)|
|........                              |

我希望更新我的行以保留正常数据并删除"()" 我想知道是否有办法在我的sql update语句中使用正则表达式删除"之后的所有数据;("

提前感谢。

3 个答案:

答案 0 :(得分:1)

我认为最简单的方法是substring_index()

update t
    set col = substring_index(col, ' (', 1)
    where col like '% (%';

答案 1 :(得分:1)

如果后面还有一些数据,你必须使用2 SUBSTRING_INDEX

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX( YourFieldName , '(', 1),')',-1);

<强>样品

mysql> SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('normal data 1 (some data to remove 1)', '(', 1),')',-1);
+------------------------------------------------------------------------------------------+
| SUBSTRING_INDEX(SUBSTRING_INDEX('normal data 1 (some data to remove 1)', '(', 1),')',-1) |
+------------------------------------------------------------------------------------------+
| normal data 1                                                                            |
+------------------------------------------------------------------------------------------+
1 row in set (0,00 sec)

mysql>

答案 2 :(得分:1)

尝试使用replace,substring和position函数来消除()之间的数据。

更新tablename set col = replace(col,substr(col,position(&#39;(&#39; in col),position(&#39;)&#39; in col)-position(&# 39;(&#39; in col)),&#39;&#39;);

然后它会更新()包括大括号之间的所有数据。