以下是我的mysql数据库中的几行列数据
数据
test(victoryyyyy)king
java(vaaaarrrryy)side
(vkittt)sap
flex(vuuuuu)
k(vhhhhyyy)kk(abcd)k
在所有行中都有以
开头的随机字符串 (v
以
结束)
我的任务: - 我必须将'(v'到')'中的所有字符串替换为空格(即'')我不应该触及大括号中的其他值,上面的情况我不应该在最后一行替换(abcd)
我的意思是上面的例子结果应该是
test king
java side
sap
flex
kkk(abcd)k
有人可以帮帮我吗?
谢谢
此致
基兰
答案 0 :(得分:1)
Mysql不支持替换任务的正则表达式。
因此,您只能使用字符串函数来查找和替换必要的部分。
答案 1 :(得分:0)
我为此编写了自己的函数,它正在运行。谢谢你们。
drop FUNCTION replace_v;
CREATE FUNCTION replace_v (village varchar(100)) RETURNS varchar(100)
DETERMINISTIC
BEGIN
DECLARE a INT Default 0 ;
DECLARE lengthofstring INT Default 0 ;
DECLARE returnString varchar(100) Default '' ;
DECLARE charString varchar(100) Default '' ;
DECLARE found char(1) default 'N';
declare seccharString varchar(100) Default '' ;
set lengthofstring = length(village);
simple_loop: LOOP
SET a=a+1;
set charString=substr(village,a,1);
if(charString = '(') then
set seccharString=substr(village,a+1,1);
if( seccharString = 'v' || seccharString = 'V' || seccharString = 'p' || seccharString = 'P'
|| seccharString = 'm' || seccharString = 'M' ) then
set found='y';
end if;
end if ;
if(found='n') then
set returnString = concat (returnString,charString);
end if;
if(charString = ')') then
set found='n';
end if ;
IF a>=lengthofstring THEN
LEAVE simple_loop;
END IF;
END LOOP simple_loop;
if ( found = 'y') then
set returnString =village;
end if;
RETURN (replace( returnString,'&', ' '));
END