如何从mysql中删除字符串中的特定单词?

时间:2014-09-15 10:57:22

标签: mysql sql mysql-workbench

我有字符串“这是我的测试字符串”,我只想删除单词“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行

3 个答案:

答案 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;

请注意,这适用于变量中的字符串。它不容易推广到表格中的一列这样的字符串。