测试 字符类型的值是否可以更新到MONEY 类型的列 ,我以为是不可以的,没有想到`````应该是有些可以 ,手懒了, SET  早餐='123456',转换成功.于是乎 杯具就发生了
-----------------------------杯具表----------------------------------------------------
三餐编号
三餐编号  日期          星期 早餐(MONEY)    早餐食谱
110401 2011-04-01 星期五 123456.00 粉干;豆浆
110402 2011-04-02 星期六 123456.00 一碗八宝粥;一根油条,豆腐老
110403 2011-04-03 星期日 123456.00 馄饨,豆腐老
110404 2011-04-04 星期一 123456.00 粉干;豆腐花
110405 2011-04-05 星期二 123456.00 粉干;豆腐花
110406 2011-04-06 星期三 123456.00 粉干;油条
110407 2011-04-07 星期四 123456.00 八宝粥;两根油条
110408 2011-04-08 星期五 123456.00 泡粉:2.2;豆腐花:1.0
110409 2011-04-09 星期六 123456.00 八宝粥;2根油条
110410 2011-04-10 星期天 123456.00 泡粉
--------------------------------------------------------------------------------------------------------------------另一张备份表的(备份表)------------------------------------------------
三餐编号  日期          星期 早餐(MONEY)    早餐食谱
110401 2011-04-01 星期五 3.50 粉干;豆浆
110402 2011-04-02 星期六 3.10 一碗八宝粥;一根油条,豆腐老
110403 2011-04-03 星期日 3.50 馄饨,豆腐老
110404 2011-04-04 星期一 3.00 泡粉;豆腐花
110405 2011-04-05 星期二 3.00 泡粉;豆腐花
110406 2011-04-06 星期三 2.80 泡粉;油条
110407 2011-04-07 星期四 2.70 八宝粥;两根油条
110408 2011-04-08 星期五 3.20 泡粉:2.2;豆腐花:1.0
110409 2011-04-09 星期六 2.70 八宝粥;二根油条
---------------------------另一张备份表的--------------------------------------------------说明 :备份表有些没有杯具表的一些记录能不能根据备份表的早餐来修正杯具表的早餐?-------------------早餐食谱价格表--------------------------
食谱编号 食谱名称 食谱别称 价格
11001  粉干  泡粉           2.00
11002  豆浆     NULL        1.50
11003  油条                0.60
11004  八宝粥 NULL                1.20
11005  豆腐花 豆腐老                1.00
11006  馄饨 NULL                   2.50
-----------------------------------------------------------
弱弱问一下: 能不能 根据早餐食谱价格表来更新杯具表的早餐花销?
比如 
110403 2011-04-03 星期日 123456.00 混沌,豆腐老
110404 2011-04-04 星期一 123456.00 粉干;豆腐花
根据食谱价格表  馄饨:2.0  豆腐老 1.5  泡粉 :2.0 来更新:
110403 2011-04-03 星期日 3.50 馄饨,豆腐老
110404 2011-04-04 星期一 3.00 泡粉;豆腐花
谢谢各位前辈的解答 

解决方案 »

  1.   

    更改一下  : 八宝粥的价格 是  : 1.5    RMB
     
      

  2.   

    泡粉的价格,有两个价格  涨价了  涨了两毛也  因为可以有个时间点 ,所以可以指定时间段 更改
    无视变动  
    按2元计算 UPDATE 一日三餐
    SET 早餐食谱=REPALCE('%粉干%','粉干','泡粉') 为什么更新不了?
    但是
    (112 行受影响)由于早餐食谱中粉干的位置是非确定性的

    110401 2011-04-01 星期五 3.50 粉干;豆浆
    110415 2011-04-15 星期五 3.50  豆浆;粉干
    那个地方错了?
      

  3.   

    CREATE TABLE beiju(三餐编号 VARCHAR(20), 日期 VARCHAR(20), 星期 VARCHAR(10), 早餐 MONEY, 早餐食谱 VARCHAR(100))
    INSERT dbo.beiju
    SELECT '110401', '2011-04-01', '星期五', '123456.00', '粉干;豆浆' UNION ALL
    SELECT '110402', '2011-04-02', '星期六', '123456.00', '一碗八宝粥;一根油条,豆腐老' UNION ALL
    SELECT '110403', '2011-04-03', '星期日', '123456.00', '馄饨,豆腐老' UNION ALL
    SELECT '110404', '2011-04-04', '星期一', '123456.00', '粉干;豆腐花' UNION ALL
    SELECT '110405', '2011-04-05', '星期二', '123456.00', '粉干;豆腐花' UNION ALL
    SELECT '110406', '2011-04-06', '星期三', '123456.00', '粉干;油条' UNION ALL
    SELECT '110407', '2011-04-07', '星期四', '123456.00', '八宝粥;两根油条' UNION ALL
    SELECT '110408', '2011-04-08', '星期五', '123456.00', '泡粉:2.2;豆腐花:1.0' UNION ALL
    SELECT '110409', '2011-04-09', '星期六', '123456.00', '八宝粥;2根油条' UNION ALL
    SELECT '110410', '2011-04-10', '星期天', '123456.00', '泡粉'CREATE TABLE beifen(三餐编号 VARCHAR(20), 日期 VARCHAR(20), 星期 VARCHAR(10), 早餐 MONEY, 早餐食谱 VARCHAR(100))
    INSERT dbo.beifen
    SELECT '110401', '2011-04-01', '星期五', 3.50, '粉干;豆浆' UNION ALL
    SELECT '110402', '2011-04-02', '星期六', 3.10, '一碗八宝粥;一根油条,豆腐老' UNION ALL
    SELECT '110403', '2011-04-03', '星期日', 3.50, '馄饨,豆腐老' UNION ALL
    SELECT '110404', '2011-04-04', '星期一', 3.00, '粉干;豆腐花' UNION ALL
    SELECT '110405', '2011-04-05', '星期二', 3.00, '粉干;豆腐花' UNION ALL
    SELECT '110406', '2011-04-06', '星期三', 2.80, '粉干;油条' UNION ALL
    SELECT '110407', '2011-04-07', '星期四', 2.70, '八宝粥;两根油条' UNION ALL
    SELECT '110408', '2011-04-08', '星期五', 3.20, '泡粉:2.2;豆腐花:1.0' UNION ALL
    SELECT '110409', '2011-04-09', '星期六', 2.70, '八宝粥;2根油条'CREATE TABLE price(食谱编号 VARCHAR(20), 食谱名称 VARCHAR(10), 食谱别称 VARCHAR(10), 价格 MONEY)
    INSERT dbo.price
    SELECT '11001', '粉干', '泡粉', 2.00 UNION ALL
    SELECT '11002', '豆浆', NULL, 1.50 UNION ALL
    SELECT '11003', '油条', NULL, 0.60 UNION ALL
    SELECT '11004', '八宝粥', NULL, 1.50 UNION ALL
    SELECT '11005', '豆腐花', '豆腐老', 1.00 UNION ALL
    SELECT '11006', '馄饨', NULL, 2.50
    ;
    DECLARE @n INT
    SET @n = 100 ;
    WITH    numcte
              AS ( SELECT   1 AS n
                   UNION ALL
                   SELECT   n + 1
                   FROM     numcte
                   WHERE    n < @n
                 )
        SELECT  *
        INTO    Nums
        FROM    numcte--创建一个临时数字辅助表NumsUPDATE  dbo.beiju
    SET     dbo.beiju.早餐 = dbo.beifen.早餐
    FROM    dbo.beifen
            LEFT JOIN dbo.beiju ON dbo.beifen.三餐编号 = dbo.beiju.三餐编号 --先根据备份表更新部分杯具表数据
    ;
    WITH    orgprice
              AS ( SELECT   a.三餐编号 ,
                            SUM(ISNULL(b.价格, 0)) AS 价格
                   FROM     ( SELECT    三餐编号 ,
                                        SUBSTRING(早餐食谱, n,
                                                  CHARINDEX(';', 早餐食谱 + ';', n)
                                                  - n) AS 早餐食谱
                              FROM      dbo.beiju
                                        JOIN dbo.Nums ON n <= LEN(早餐食谱)
                                                         AND SUBSTRING(';' + 早餐食谱,
                                                                  n, 1) = ';'
                              WHERE     早餐 = 123456.00
                            ) a
                            LEFT JOIN dbo.price b ON a.早餐食谱 = b.食谱名称
                                                     OR a.早餐食谱 = b.食谱别称
                   GROUP BY a.三餐编号
                 )
        UPDATE  dbo.beiju
        SET     早餐 = o.价格
        FROM    dbo.beiju b
                JOIN orgprice o ON b.三餐编号 = o.三餐编号--更新(早餐 = 123456.00,你错误更新的数据)且不在备份表的数据SELECT * FROM dbo.beiju--由于一碗,一根之类的词语比较难处理,这里需要手动更新,查询结果如果早餐列有0的话,那就是需要手动更新的DROP TABLE dbo.beiju,dbo.beifen,dbo.price,dbo.Nums
    --你最好将有关表备份在尝试以上语句……
    --最终结果如下:
    /*
    三餐编号                 日期                   星期         早餐                    早餐食谱
    -------------------- -------------------- ---------- --------------------- ----------------------------------------------------------------------------------------------------
    110401               2011-04-01           星期五        3.50                  粉干;豆浆
    110402               2011-04-02           星期六        3.10                  一碗八宝粥;一根油条,豆腐老
    110403               2011-04-03           星期日        3.50                  馄饨,豆腐老
    110404               2011-04-04           星期一        3.00                  粉干;豆腐花
    110405               2011-04-05           星期二        3.00                  粉干;豆腐花
    110406               2011-04-06           星期三        2.80                  粉干;油条
    110407               2011-04-07           星期四        2.70                  八宝粥;两根油条
    110408               2011-04-08           星期五        3.20                  泡粉:2.2;豆腐花:1.0
    110409               2011-04-09           星期六        2.70                  八宝粥;2根油条
    110410               2011-04-10           星期天        2.00                  泡粉
    */