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。如果不可用,您可能需要创建一个用户定义的函数。在本例中,请查看答案以获取更多详细信息。