Mysql 如何使用regex更新表行
我有一个表,其中的行如下:Mysql 如何使用regex更新表行,mysql,sql,Mysql,Sql,我有一个表,其中的行如下: |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)| |........
|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语句中使用正则表达式来删除“(”我认为最简单的方法是
substring\u index()
:
如果后面还有一些数据,则必须像这样使用2子字符串(索引) 样本
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>
尝试使用replace、substring和position函数来消除()之间的数据 更新tablename set col=replace(col,substr(col,position(“(”在col中),position(“)”在col中)-position(“(”在col中)),”
然后它将更新()之间的所有数据,包括大括号。这不是假设在预期的字符之前没有“(”字符吗?
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>