2015-09-07 68 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;