三餐编号   日期          星期 早餐  早餐食谱
101205 2010-12-05 星期天 3.50 粉干;豆浆
101206 2010-12-06 星期一 3.50 粉干;豆浆
101207 2010-12-07 星期二 3.50 粉干;豆浆
101208 2010-12-08 星期三 3.50 粉干;豆浆
101209 2010-12-09 星期四 3.50 粉干;豆浆
101210 2010-12-10 星期五 3.50 粉干;豆浆
 UPDATE   一日三餐2011
 SET 早餐食谱=REPLACE('%','粉干','泡粉') WHERE 三餐编号 <'110323'
结果:
三餐编号 日期 星期 早餐 早餐食谱
101205 2010-12-05 星期天 3.50 %
101206 2010-12-06 星期一 3.50 %
101207 2010-12-07 星期二 3.50 %
101208 2010-12-08 星期三 3.50 %
101209 2010-12-09 星期四 3.50 %
101210 2010-12-10 星期五 3.50 % UPDATE   一日三餐2011
 SET 早餐食谱=REPLACE('粉干%','粉干','泡粉') WHERE 三餐编号 <'110323'
结果:
三餐编号 日期 星期 早餐 早餐食谱
101205 2010-12-05 星期天 3.50 %泡粉%
101206 2010-12-06 星期一 3.50 %泡粉%
101207 2010-12-07 星期二 3.50 %泡粉%
101208 2010-12-08 星期三 3.50 %泡粉%
101209 2010-12-09 星期四 3.50 %泡粉%
101210 2010-12-10 星期五 3.50 %泡粉%
为什么
EPLACE ( string_expression , string_pattern , string_replacement )
参数:
string_expression 
要搜索的字符串表达式。string_expression 可以是字符或二进制数据类型。string_pattern
是要查找的子字符串。string_pattern 可以是字符或二进制数据类型。string_pattern 不能是空字符串 ('')。string_replacement
替换字符串。string_replacement 可以是字符或二进制数据类型。有出路?

解决方案 »

  1.   

    UPDATE 一日三餐2011
     SET 早餐食谱=REPLACE(早餐食谱,'粉干','泡粉') WHERE 三餐编号 <'110323'
      

  2.   

    sql的联机丛书:
    以下示例使用 xxx 替换 abcdefghi 中的字符串 cde。
    SELECT REPLACE('abcdefghicde','cde','xxx');
    GO而我
    意思就是把早餐食谱中的 粉干 这一食物 替换成 泡粉  
    REPLACE(第一个参数,第二个参数,第三个参数)
    UPDATE 一日三餐2011
     SET 早餐食谱=REPLACE('粉干%','粉干','泡粉') WHERE 三餐编号 <'110323'结果:
    101205 2010-12-05 星期天 3.50      粉干;豆浆   ---原来的
    101205 2010-12-05 星期天 3.50       %泡粉%    ---后来的
    为什么粉干没有替换掉,难道第一个参数会作为值更新到 记录中?
    第一个参数不是搜索对象吗?
      

  3.   

    UPDATE 一日三餐2011
     SET 早餐食谱=REPLACE(早餐食谱,'粉干','泡粉')
     WHERE 三餐编号 <'110323'
    AND  早餐食谱 LIKE '%粉干%'