我有字符串“这是我的测试字符串”,我只想删除单词“my”。
问题是“我的”这个词会从另一个查询中选择
select word from table
如果我知道单词
,我就试过这个set string = REPLACE(string,'my','');
所以,任何帮助
我想做点什么
set string = REPLACE(string,select word from table,'');
我的查询是
set @test = 'this is my test query';
DROP TABLE IF EXISTS `test`;
CREATE TEMPORARY TABLE IF NOT EXISTS test(word longtext );
insert into test values('my');
insert into test values('test');
select replace(@test,(select word from test),'');
我有错误的子查询应该返回1行
答案 0 :(得分:3)
select replace(@test,word,'') from test
;
...
select @test:=replace(@test,word,'') from test;
但是请记住,测试表中有多个条目,@ test最终会将表格测试中的所有单词替换为''。如果这就是你想要的那么一切都没关系。
如果你想要一个带有@test的列表输出,并且替换了不同的单词,请使用第一个查询并在将数据传递到的任何内容中解析它。
答案 1 :(得分:1)
也许有更好的方法,但尝试这个程序
CREATE PROCEDURE myProc(IN teststring VARCHAR(255),
OUT teststring_new varchar(255))
BEGIN
DECLARE n INT DEFAULT 0;
DECLARE i INT DEFAULT 0;
SELECT COUNT(*) FROM test INTO n;
SET teststring_new = teststring;
SET i=0;
WHILE i<n DO
SELECT replace(teststring_new,(SELECT word FROM test LIMIT 1 OFFSET i),'') INTO teststring_new;
SET i = i + 1;
END WHILE;
SELECT teststring_new;
END//
调用此
set @test = 'this is my test query';
call myProc(@test, @outvalue)
答案 2 :(得分:0)
我认为以下内容适用于MySQL:
select @test = replace(@test, t.word, '')
from test t;
请注意,这适用于变量中的字符串。它不容易推广到表格中的一列这样的字符串。