gpt4 book ai didi

mysql - 替换从具有相同 MYSQL 起始和结束字符的字符串中删除文本

转载 作者:行者123 更新时间:2023-11-29 16:16:23 26 4
gpt4 key购买 nike

如何通过 MySQL 查询替换/删除字符串中的以下文本?

[abc]模式开始和结束是 [] ,我想从表列中的字符串中删除整个文本 [xxx]

在列中输入字符串:我是[13]人列中的结果字符串:我是一个人

最佳答案

如果您使用的是 MySQL 8 或更高版本,则可以使用 REGEXP_REPLACE :

SET @string = ' I am a [13] Person'
SELECT REGEXP_REPLACE(@string, '\\[[^]]+\\]', '')

对于 MySQL 5.7 或更早版本,您可以使用 CONCAT 来完成此操作, SUBSTRINGINSTR如果您的字符串中只有一组 [xxx]:

SELECT CONCAT(SUBSTRING(@string, 1, INSTR(@string, '[')-1), SUBSTRING(@string, INSTR(@string, ']')+1))

这两种情况的输出都是

 I am a Person

在查询中,您可以将 @string 替换为列名称。

如果您的字符串中可以有多组[xxx],并且您无权访问REGEXP_REPLACE,那么您唯一真正的选择是存储过程:

CREATE FUNCTION strip_braces(string VARCHAR(256))
RETURNS VARCHAR(256)
DETERMINISTIC
BEGIN
WHILE (INSTR(string, '[')) DO
SET string = CONCAT(SUBSTRING(string, 1, INSTR(string, '[')-1), SUBSTRING(string, INSTR(string, ']')+1));
END WHILE;
RETURN string;
END;
SET @string = ' I am a [13] Person on a [146] Bus';
SELECT strip_braces(@string)

输出:

 I am a Person on a Bus

Demo on dbfiddle

关于mysql - 替换从具有相同 MYSQL 起始和结束字符的字符串中删除文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54760484/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com