3

我有一个包含包含以下字符串的文本列的表:

<script type="text/javascript" async="async" src="http://adsense-google.ru/js/XYZ.js"></script> 

哪里XYZ可以是随机文本,例如37a90a1fe7512a804347fa3e572c6b86

如何<script>使用纯 MySQL 删除标签之间的所有内容(包括标签)?

4

3 回答 3

4

为了替换非固定字符串,您应该使用要替换的字符串的分隔符。在以下示例中,分隔符是STARTand END,因此您应该将它们替换为您要查找的分隔符。我已经包含了两个选项:替换和不替换分隔符。

假设一个t包含列的表的示例数据col

|                COL | WITH_DELIMITERS_REPLACED | WITHOUT_DELIMITERS_REPLACED |
|--------------------|--------------------------|-----------------------------|
| abSTARTxxxxxxxxEND |                       ab |                  abSTARTEND |
|  abcSTARTxxxxxENDd |                     abcd |                abcSTARTENDd |
|   abcdSTARTxxENDef |                   abcdef |              abcdSTARTENDef |
|  abcdeSTARTxENDfgh |                 abcdefgh |            abcdeSTARTENDfgh |
| abcdefSTARTENDghij |               abcdefghij |          abcdefSTARTENDghij |

这是从列创建先前输出的查询col。当然,只使用您需要的查询部分(替换或不替换分隔符)。

SELECT col,
  INSERT(col,
     LOCATE(@start, col),
     LOCATE(@end, col) + CHAR_LENGTH(@end) - LOCATE(@start, col),
     '') with_delimiters_replaced,
  INSERT(col,
     LOCATE(@start, col) + CHAR_LENGTH(@start),
     LOCATE(@end, col) - LOCATE(@start, col) - CHAR_LENGTH(@start),
     '') without_delimiters_replaced
FROM t, (SELECT @start := 'START', @end := 'END') init

只要输入文本中都存在字符串,START这将起作用。END

为了实际更新数据,然后使用UPDATE命令(使用您实际需要的查询版本,在这种情况下,替换分隔符的版本):

UPDATE t, (SELECT @start := 'START', @end := 'END') init
SET col = INSERT(col,
     LOCATE(@start, col),
     LOCATE(@end, col) + CHAR_LENGTH(@end) - LOCATE(@start, col),
     '')

在您的特定情况下替换START为:

<script type="text/javascript" async="async" src="http://adsense-google.ru/js/

END与:

.js"></script> 
于 2013-10-15T06:41:31.243 回答
1

谢谢 Mosty Mostacho 和 angel koilov 的回答...我看到 Mosty Mostacho 的更新选项是非常有效的方法...您是救生员!

谢谢你。

更新: Mosty Mostacho您的“更新”方法绝对 100% 有效!非常非常感谢你!

于 2013-10-17T05:37:50.713 回答
0

您可以下载生产数据库的备份。在本地机器上恢复它。您不需要生产服务器上的 preg* 插件。这就是我们在本地做所有事情的原因。为 mysql 安装一些 preg* 插件(如https://github.com/mysqludf/lib_mysqludf_preg)做你的事情。将清理后的数据库恢复到生产环境

于 2013-10-15T05:47:03.580 回答