百里下载站 > 资讯教程 > 软件教程 > mysql实现正规替换或删除字段内容

mysql实现正规替换或删除字段内容

  • 作者:佚名
  • 来源:百里下载站
  • 时间:2023-12-18

mysql需要通过替换replace、截取substring、查找位置locate这三个函数结合使用来实现如PHP正则替换preg_match函数的效果。

1、删除案例:
以下是数据库中的一个表newstxt:
+----+------------------------------------------+
| id | zdname |
+----+------------------------------------------+
| 1 | 我天天晒太阳,

要删除或替换的不定字符串1

还喝西北风 |
| 2 | 一起来游泳吧!

要删除或替换的不定字符串2

软件园3期体育管 |
| 3 | 百里下载-绿色安全的软件、游戏下载平台:

要删除或替换的不定字符串3

,太棒了! |
+----+------------------------------------------+
mysql语句:
update newstxt set zdname= replace(zdname, substring(zdname, locate('

', zdname),locate('

', zdname)-locate('

', zdname)+4),'');

注意:+4 为

的长度,根据指定字符串长度如变化

函数说明:
替换函数:zdname=replace(zdname,'被替换的字符串','新的字符串');//此时zdname中的旧字符串已经被替换成了新的字符串;
截取函数:zdname=substring(zdname,开始截取的位置int,截取多少个字符串int);//此时zdname等于截取到的值;
查找位置:zdname=locate('要查找字符串',zdname);//此时zdname等于'要查找字符串'的出现位置;
+4 为

的长度

2、替换案例:
 以下是数据库中的一个表xz_ecms_news_data_1:
+----+------------------------------------------+
| id | newstext |
+----+------------------------------------------+
| 1 |

卖惨

我天天晒太阳,还喝西北风

|
| 2 |

游泳

一起来游泳吧!软件园3期体育管

|
| 3 |

网站

百里下载-绿色安全的软件、游戏下载平台,太棒了!

|
+----+------------------------------------------+
mysql语句:
update xz_ecms_news_data_1 set newstext=
replace(#替换函数
    newstext,
    substring(#截取函数
        newstext,#字段名
        locate('

', newstext),#'

'中'<'的位置
        locate('

', newstext)-locate('

', newstext)+4#'

'中'>'的位置,4是

 

的长度
    ),
    concat(#拼接函数
        '

',
        substring(#截取函数
            newstext,#字段名
            locate('

', newstext)+22,#'

'中'>'的位置,22是

的长度,可以把\计数为1或直接不对/进行计数
            locate('

', newstext)-(locate('

', newstext)+22)#'

'中'<'的位置,22是

的长度,可以把\计数为1或直接不对/进行计数
        ),
        '

'
    )
);

3、延伸实列
以下是数据库中的一个表xz_ecms_news_data_1:
+----+------------------------------------------+
| id | newstext |
+----+------------------------------------------+
| 1 |

卖惨

我天天晒太阳,还喝西北风

|
| 2 |

游泳

一起来游泳吧!软件园3期体育管

|
| 3 |

网站

百里下载-绿色安全的软件、游戏下载平台,太棒了!

|
+----+------------------------------------------+
mysql语句:
update xz_ecms_news_data_1
set newstext = replace (#替换函数原型:replace(字段名,被替换的字符串,新的字符串)
    newstext,#字段名
    ##--------------截取被替换的字符串开始--------------
    substring(#截取函数原型:substring(字段名,截取开始位置int,截取结束位置int)
        newstext,#字段名
        #--------------截取被替换内容的开始位置开始--------------
        #获取取 '

' 中第一个字符在newstext字段的位置
        locate(#获取字符串第一次出现的位置函数原型:locate(字符串,字段名,起始位置int) 如果没有“起始位置int”则从0开始查找
            substring(
                newstext,
                #获取取 “

                locate('

                #获取取 “>” 中第一个字符在newstext字段的位置
                locate(
                    '>',
                    newstext,
                    locate('

                ) - locate('

            ),
            newstext
        )
        #--------------截取被替换内容的开始位置结束--------------
        ,
        #--------------从截取被替换内容开始位置算起,截取多少个字符开始--------------
        #获取取 “

” 最后一个字符在newstext字段的位置
        locate('

 

', newstext) - locate(
            substring(
                newstext,
                #获取取 “                 locate('

                #获取取 “>” 中第一个字符在newstext字段的位置
                locate(
                    '>',
                    newstext,
                    locate('

                ) - locate('

的长度
            ),
            newstext
        ) + 4 #4是

的长度,根据结束字符串的长度如变化
        #--------------从截取被替换内容开始位置算起,截取多少个字符结束--------------
    ) 
    ##--------------截取被替换的字符串结束--------------
    ,
    ##--------------新的的字符串开始--------------
    concat(#拼接函数原型:concat(字段名1或字符串1,字段名2或字符串2,字段名N或字符串N)
        '',
        #concat()中如果需要通过程序获取内容和字符串进行拼接,需要把程序部份括起来,让程序部份先运行获取内容后再让concat拼内容
        (
            substring(
                newstext,
                #--------------截取保留内容的开始位置开始--------------
                #获取取 “

                locate('

                + 
                #获取

的长度
                length(
                    #截取“

”的内容,含“


                    substring(
                        newstext,
                        #'

                        locate('

                        #获取取 “>” 中第一个字符在newstext字段的位置
                        locate(
                            '>',
                            newstext,
                            locate('

                        ) - locate('

的长度
                    )
                )
                                #--------------截取保留内容的开始位置结束--------------
                ,
                #--------------从截取保留内容开始位置算起,截取多少个字符开始--------------
                #这里拿到的是“

”中“<”的位置信息
                locate('

 

', newstext) - (
                    #获取取 “

                    locate('

                    #获取

的长度
                    length(
                        #截取“

”的内容,含“


                        substring(
                            newstext,
                            #'

                            locate('

                            #获取取 “>” 中第一个字符在newstext字段的位置
                            locate(
                                '>',
                                newstext,
                                locate('

                            ) - locate('

的长度
                        )
                    )
                )
                                #--------------从截取保留内容开始位置算起,截取多少个字符结束--------------
            )
        ),
        '
'
    )
        ##--------------新的的字符串结束--------------
);