在MySQL中有什么像substr_replace?

Med*_*dar 2 mysql function

我的列数据看起来像这样"132154646878"我想从指定的位置替换每个的一部分,如:

substr_replace( "132154646878", "***",4)

输出=> 132***646878

MySQL中的任何功能?

Ray*_*and 6

看起来你正在寻找MySQL的INSERT功能.

INSERT(str, pos, len, newstr)
Run Code Online (Sandbox Code Playgroud)

返回字符串str,子字符串从位置pos开始,len字符长由字符串newstr替换.如果pos不在字符串的长度内,则返回原始字符串.如果len不在字符串其余部分的长度内,则从位置pos替换字符串的其余部分.如果任何参数为NULL,则返回NULL.

来源https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_insert

询问

SELECT INSERT("132154646878", 4, LENGTH('***'), "***");
Run Code Online (Sandbox Code Playgroud)

PS记住,当你使用多字节字符的字符集UTF8一样在参数中newstr你需要使用CHAR_LENGTH(),而不是关闭LENGTH()

结果

| INSERT("132154646878", 4, LENGTH('***'), "***") |
| ----------------------------------------------- |
| 132***646878                                    |
Run Code Online (Sandbox Code Playgroud)

查看DB小提琴