SQL批量删除字符中间的动态内容

post表,字段content中有如下内容:

<a href="http://www.xx.com/" data-cfemail="sdfsdfsd7eoi7d61d2">[email protected]</a>
<a href="http://www.xx.com/" data-cfemail="0d6a68797rdd7d61aa">[email protected]</a>
<a href="http://www.xx.com/" data-cfemail="easdf797e4df6d1sdf">[email protected]</a>
<a href="http://www.xx.com/" data-cfemail="0s6ad68797e4d7d6d9">[email protected]</a>

要批量删除 data-cfemail="这里边的内容",我写了如下SQL:

UPDATE post 
SET content = REPLACE (
    content,
    substring(
        content,
        locate( 'data-cfemail="', content ) + CHAR_LENGTH( 'data-cfemail="' ),
        locate( '">[email protected]', content, CHAR_LENGTH( 'data-cfemail="' ) ) - (
            SELECT
                locate( 'data-cfemail="', content ) + CHAR_LENGTH( 'data-cfemail="' )
            )
        ),
        ''
    )

运行后可以删除第一条 data-cfemail="这里边的内容" ,再执行就一直是成功0条,请问为什么只匹配了一次呢?是一条数据里有多个匹配值。是SQL有问题还是本来就只能识别一次? 求解决。

阅读 2.1k
1 个回答

在where中使用正则

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题