我有一个像这样的行的表:
|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语句中使用正则表达式删除"之后的所有数据;("
提前感谢。
答案 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;);
然后它会更新()包括大括号之间的所有数据。