我有一个表,里面有这样的行:
|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 更新语句中使用正则表达式来删除" (">
如果后面
还有一些数据,则必须使用 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>
我认为最简单的方法是substring_index()
:
update t
set col = substring_index(col, ' (', 1)
where col like '% (%';
尝试使用替换、子字符串和位置函数来消除 (( 之间的数据。
更新表名集 col=replace(col,substr(col,position('(
' in col(,position('(' in col(-position('(' in col((,' '(;然后它将更新 (( 之间的所有数据,包括大括号。