【问题标题】:MySql Remove All Substrings that Match Table ValuesMySql 删除所有匹配表值的子字符串
【发布时间】:2015-12-02 13:47:59
【问题描述】:

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

【问题讨论】:

  • 你能提供你的表 tbl_StringsToReplace 定义和一些示例数据吗?
  • 当然,所以 tbl_StringsToReplace 有一列 strReplace,其值包括 'Shoes, ' 'For Him, ' 'For Her, '

标签: mysql replace


【解决方案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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2021-04-07
    相关资源
    最近更新 更多