我有一个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方式,任何建议将不胜感激。感谢
答案 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;