β

Mysql的replace函数中实现通配符功能

ABCD数据库 235 阅读

Mysql的replace函数不支持通配符,如果想要在mysql数据库中进行通配符替换,可以通过以下方法实现:

example:

表名:abcd9_com

内容:


|idnbsp;|nbsp;htmlnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;|

|nbsp;nbsp;|thisisatestlt;divgt;abcdlt;divgt;nbsp;textnbsp;nbsp;nbsp;|
|nbsp;2|thisisatestlt;divgt;efghlt;divgt;nbsp;textnbsp;nbsp;nbsp;|
|nbsp;3|thisisatestlt;divgt;ijkllt;divgt;nbsp;textnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;|
|nbsp;4|thisisatestlt;divgt;mnoplt;divgt;nbsp;textnbsp;nbsp;|

需求:将abcd9com表中所有数据中的lt;divgt;lt;divgt;替换为字符“abcd9com”。

方法一:

UPDATEabcd9_comSEThtml=REPLACEhtmlCONCATlt;divgt;SUBSTRING_INDEXSUBSTRING_INDEXhtmllt;divgt;lt;lt;divgt;abcd9comnbsp;;

所用函数:

、SUBSTRING_INDEX:用法为SUBSTRING_INDEXstrdelimnum,其返回在str中第num个delim之前或之后的所有字符。若num为正则为向前取,为负则为向后取。如SUBSTRING_INDEXabcdabcd9comb2返回字符串“abcda”;SUBSTRING_INDEXabcdabcd9comb返回字符串“cd9com”。

2、CONCAT:用法为:CONCATstrstr2…nbsp;,返回结果为连接参数str、str2、产生的字符串,如concatabcdef返回字符串“abcdef”。

对上述mysql命令进行分解:

、SUBSTRING_INDEXhtmllt;divgt;会返回“lt;divgt;”后的字符串“XXXXlt;divgt;text”,如:id=的数据将返回“abcdlt;divgt;text”;

2、SUBSTRING_INDEXSUBSTRING_INDEXhtmllt;divgt;lt;对步骤的结果“XXXXlt;divgt;text”进行数据处理,返回第个“lt;”前面的所有字符“XXXX”,如:id=的数据将返回“abcd”。

3、通过CONCAT连接所要替换内容中通配符部分(即“XXXX”)和固定字符(即“lt;divgt;lt;divgt;”),如id=的数据将返回“lt;divgt;abcdlt;divgt;”;

4、REPLACE对表内各条数据进行替换各自的“lt;divgt;XXXXlt;divgt;”,即实现通配符功能。

方法二:

UPDATEabcd9_comSEThtml=REPLACEhtmlSUBSTRINGhtmlLOCATElt;divgt;htmlLOCATElt;divgt;htmlLOCATElt;divgt;html6abcd9com

所用函数:

、LOCATE:用法为LOCATEsubstrstrposnbsp;,返回子串substr在字符串str中第pos位置后第一次出现的位置,如LOCATEbcabcdabcd94返回“6”;LOCATEbcabcdabcd9返回“2”。

2、SUBSTRING:用法为SUBSTRINGstrposlen,返回字符串str中的第lt;posgt;位置开始的len个字符,如SUBSTRINGabcd9com23返回字符串“bcd”。

对上述mysql命令进行分解:

、LOCATElt;divgt;html返回“lt;divgt;”的位置,如example中数据将返回“6”。

2、LOCATElt;divgt;htmlLOCATElt;divgt;html6返回“lt;divgt;”和“lt;divgt;”之间的字符个数,因为LOCATE返回的位置是字符串的首字符位置,LOCATElt;divgt;htmlLOCATElt;divgt;html的差值并不包括后面的“lt;divgt;”,所以要加上“lt;divgt;”的字符数“6”。

3、从上面两步骤可见,SUBSTRINGhtmlLOCATElt;divgt;htmlLOCATElt;divgt;htmlLOCATElt;divgt;html6返回的是lt;divgt;和lt;divgt;之间的字符串(包括“lt;divgt;”和“lt;divgt;”)。

4、REPLACE对表内各条数据替换步骤3返回的内容,即实现通配符功能。

作者:ABCD数据库
www.abcd9.com - select,insert,update my data.
原文地址:Mysql的replace函数中实现通配符功能, 感谢原作者分享。

发表评论