当前位置: 代码迷 >> Sql Server >> sql 怎么将字段内容批量替换
  详细解决方案

sql 怎么将字段内容批量替换

热度:9   发布时间:2016-04-24 09:42:49.0
sql 如何将字段内容批量替换
本帖最后由 xiaxue77701 于 2014-11-14 15:13:38 编辑
有一张表tf_bom:
                prd_no                           prd_no_chg
                080088041613            NULL
                031010600216        
                031010300093            031010300025
                032010300076            032010300038;032010300067
                032010600080            032010600118;032010600073;032010600121
                031010300093            031010300001

有一张视图min1:
                prd_no                           prd_no_chg                                                                                     prd_no_chg_s
                031010300093            031010300025                                                                               031010300025
                032010300076            032010300038;032010300067                                                  032010300038
                032010600080            032010600118;032010600073;032010600121                     032010600073

如果tf_bom中的prd_no和prd_no_chg都与min1中的一样,以prd_no=‘ 032010300076’,prd_no_chg=‘032010300038;032010300067’为例,在min1中,prd_no=‘ 032010300076’,prd_no_chg=‘032010300038;032010300067’对应的prd_no_chg_s=‘032010300038’,希望把表tf_bom中的prd_no替换为032010300038,prd_no_chg替换为032010300076;032010300067(去除032010300038,替换为032010300076)

期望得到的tf_bom:
                prd_no                           prd_no_chg
                080088041613            NULL
                031010600216        
                031010300025            031010300093
                032010300038            032010300076;032010300067
                032010600073            032010600118;032010600080;032010600121
                031010300093            031010300001
哪位知道,请解答下!
谢谢!
                
------解决思路----------------------

UPDATE t1
SET t1.prd_no=t2.prd_no_chg_s,t1.prd_no_chg=REPLACE(t1.prd_no_chg,t2.prd_no_chg_s,t2.prd_no)
FROM tf_bom t1
INNER JOIN min1 t2 ON t1.prd_no=t2.prd_no AND t1.prd_no_chg=t2.prd_no_chg
WHERE t1.prd_no='032010300076'

------解决思路----------------------
看起来代码都一样长,就偷懒直接用REPLACE(),不考虑分号分割了。
UPDATE tf_bom
   SET b.prd_no = m.prd_no_chg_s,
       b.prd_no_chg = REPLACE(m.prd_no_chg,m.prd_no_chg_s,m.prd_no)
  FROM tb_bom b, min1 m
 WHERE b.prd_no = m.prd_no
  相关解决方案