你可以用这样的查询做到这一点。它只在字符串的开始,中间和结尾测试固定字符串。它也检查长度。
SELECT
val
, REPLACE(val, SUBSTRING(val,LOCATE('<!-- ',val),60),'') after_replace
FROM testtable
WHERE
LOCATE('<!-- ',val) > 0
AND
SUBSTRING(val,15+LOCATE('<!-- ',val),12) = ' --><!-- /* '
AND
SUBSTRING(val,53+LOCATE('<!-- ',val),7) = ' */ -->'
;
UPDATE testtable
set val = REPLACE(val, SUBSTRING(val,LOCATE('<!-- ',val),60),'')
WHERE
LOCATE('<!-- ',val) > 0
AND
SUBSTRING(val,15+LOCATE('<!-- ',val),12) = ' --><!-- /* '
AND
SUBSTRING(val,53+LOCATE('<!-- ',val),7) = ' */ -->'
;
样品
测试数据
mysql> select * from testtable;
+----+-----------------------------------------------------------------------------------------+
| id | val |
+----+-----------------------------------------------------------------------------------------+
| 1 | <!-- ZUJ7vPmaFn --><!-- /* 1uqjsQSyWVhmOHAEVa1i62html */ --> |
| 2 | asdfasefasdf<!-- ZUJ7vPmaFn --><!-- /* 1uqjsQSyWVhmOHAEVa1i62html */ -->asdfasdfas |
| 3 | 12345<!-- ZUJ7vPmaFn --><!-- /* 1uqjsQSyWVhmOHAEVa1i62html */ -->67890 |
+----+-----------------------------------------------------------------------------------------+
3 rows in set (0,00 sec)
SELECT样品
mysql> SELECT
-> val
-> , REPLACE(val, SUBSTRING(val,LOCATE('<!-- ',val),60),'') after_replace
-> FROM testtable
-> WHERE
-> LOCATE('<!-- ',val) > 0
-> AND
-> SUBSTRING(val,15+LOCATE('<!-- ',val),12) = ' --><!-- /* '
-> AND
-> SUBSTRING(val,53+LOCATE('<!-- ',val),7) = ' */ -->'
-> ;
+-----------------------------------------------------------------------------------------+-----------------------------+
| val | after_replace |
+-----------------------------------------------------------------------------------------+-----------------------------+
| <!-- ZUJ7vPmaFn --><!-- /* 1uqjsQSyWVhmOHAEVa1i62html */ --> | |
| asdfasefasdf<!-- ZUJ7vPmaFn --><!-- /* 1uqjsQSyWVhmOHAEVa1i62html */ -->asdfasdfas | asdfasefasdfasdfasdfas |
| 12345<!-- ZUJ7vPmaFn --><!-- /* 1uqjsQSyWVhmOHAEVa1i62html */ -->67890 | 1234567890 |
+-----------------------------------------------------------------------------------------+-----------------------------+
3 rows in set (0,00 sec)
mysql>
更新
mysql> UPDATE testtable
-> set val = REPLACE(val, SUBSTRING(val,LOCATE('<!-- ',val),60),'')
-> WHERE
-> LOCATE('<!-- ',val) > 0
-> AND
-> SUBSTRING(val,15+LOCATE('<!-- ',val),12) = ' --><!-- /* '
-> AND
-> SUBSTRING(val,53+LOCATE('<!-- ',val),7) = ' */ -->'
-> ;
Query OK, 3 rows affected (0,00 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> select * from testtable;
+----+-----------------------------+
| id | val |
+----+-----------------------------+
| 1 | |
| 2 | asdfasefasdfasdfasdfas |
| 3 | 1234567890 |
+----+-----------------------------+
3 rows in set (0,00 sec)
mysql>
请告诉我们什么ü做了..,我们将帮助您解决.. – m2j