Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何从列中删除/替换与表达式%[%]%匹配的子字符串_Mysql_Sql - Fatal编程技术网

Mysql 如何从列中删除/替换与表达式%[%]%匹配的子字符串

Mysql 如何从列中删除/替换与表达式%[%]%匹配的子字符串,mysql,sql,Mysql,Sql,我有一个列message,其表达式类似于[example]或[bla-bla]。基本上,我想删除大括号[]以及大括号之间的所有文本。 例如: input: its a string [text to remove including braces] to replace. output: its a string to replace 我尝试了很多解决方案,但仍然不起作用 UPDATE resource SET message = REPLACE(message,'%[%]%','') 看看

我有一个列
message
,其表达式类似于[example]或[bla-bla]。基本上,我想删除大括号
[]
以及大括号之间的所有文本。
例如:

input: its a string [text to remove including braces] to replace.
output: its a string to replace
我尝试了很多解决方案,但仍然不起作用

UPDATE resource SET message = REPLACE(message,'%[%]%','')
看看函数。您可以提供一个模式来匹配您喜欢的子字符串

以下是一个例子:

select regexp_replace('its a string [text to remove including braces] to replace.', 
                      '\\[[^\\]]*\\]', -- the pattern
                      '');
输出:

its a string to replace.

如果只有一对方括号,则可以使用:

UPDATE resource
    SET message = CONCAT(SUBSTRING_INDEX(message, '[', 1),
                         SUBSTRING_INDEX(message, ']', -1)
                        )
    WHERE message LIKE '%[%]%';

请提供您正在使用的DBMS,并用它标记您的问题。SQL只是一种语言,我正在使用mysql和phpmyadmin。这是一个sql语言问题,所以我只标记了SQLThank Gordan Linoff。但它的效果并不好。左大括号保留在字符串中。有时它会删除左后的所有数据brace@MuhammadUsmanakram,您使用的是哪个版本的MySQL?错误到底是什么?mysql版本14.14发行版5.7.27,对于Linux(x86_64),使用EditLine包装器#1064,语法有错误;查看手册的版本,以了解在“(”附近使用的正确语法是字符串[要删除的文本,包括大括号]替换“”,在第1行。我在select和regexp之间使用了我的表名_replace@MuhammadUsmanakram,
REGEXP\u REPLACE
函数从8.0版开始可用。因此,如果可能,请升级到较新版本的MySQL。如果不可用,您可能需要创建一个用户定义的函数。在本例中,请查看答案以获取更多详细信息。