2015-09-07 67 views
0

我有一个VARCHAR变量,我想删除所有匹配表中的列的子串。到目前为止,我已经建立了一个查询,将返回是我的变量的子串的所有行,使用下面的查询:MySql删除所有匹配表值的子串

SET @myval = '%For Her, Shoes,, Sizes 14-24%'; 

SELECT strReplace 
FROM tbl_StringsToReplace 
WHERE @myval LIKE CONCAT('%', strReplace, '%'); 

但我无法写一个REPLACE查询,将取代多个值。我试图写类似以下内容:

SET @myval = REPLACE((SELECT strReplace 
        FROM tbl_StringsToReplace 
        WHERE @myval LIKE CONCAT('%', strReplace, '%')), '', @myval); 

但我得到的错误:

错误代码:1242子查询返回多个1行

我很想在实现这一目标纯SQL。 Euther的方式,任何意见将不胜感激。由于

+0

你能提供你的表tbl_StringsToReplace定义和一些示例数据? –

+0

当然,所以tbl_StringsToReplace具有一个柱,strReplace,其值如 “鞋,” “对他来说,” “她,” – mils

回答

1

尝试:

SET @myval = '%For Her, Shoes,, Sizes 14-24%'; 

select val into @myval 
from (
    SELECT @myval := replace(@myval, strReplace, '') val 
    FROM tbl_StringsToReplace 
) r 
order by length(val) 
limit 1; 

select @myval;