MySql删除与表值匹配的所有子字符串

时间:2015-09-07 04:53:23

标签: mysql replace

我有一个VARCHAR变量,我想删除所有匹配表中列的子串。到目前为止,我已经构建了一个查询,它将使用以下查询返回作为我的变量的子字符串的所有行:

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方式,任何建议将不胜感激。感谢

1 个答案:

答案 0 :(得分: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;