在SQL中动态替换一些字符串值

时间:2014-11-17 08:54:49

标签: sql

我有一张这样的表

id     name                        parentid
1     LOTTEMART                    1.3
2     LOTTEMART Jabodetabek        1.3.10
3     LOTTEMART HPM GANDARIA CITY  1.3.10.1
4     LOTTEMART HPM RATU PLAZA     1.3.10.1
5     LOTTEMART HPM KELAPA GADING  1.3.10.1

我希望当我更新LOTTEMART 1.3为1.4时,兄弟姐妹和孩子会自动更新这样

 id     name                         parentid
  1     LOTTEMART                    1.4
  2     LOTTEMART Jabodetabek        1.4.10
  3     LOTTEMART HPM GANDARIA CITY  1.4.10.1
  4     LOTTEMART HPM RATU PLAZA     1.4.10.1
  5     LOTTEMART HPM KELAPA GADING  1.4.10.1

或者如果我想更新LOTTEMART Jabodetabek 1.4.10是1.4.18我想要这样的结果

 id     name                        parentid
 1     LOTTEMART                    1.4
 2     LOTTEMART Jabodetabek        1.4.18
 3     LOTTEMART HPM GANDARIA CITY  1.4.18.1
 4     LOTTEMART HPM RATU PLAZA     1.4.18.1
 5     LOTTEMART HPM KELAPA GADING  1.4.18.1

我尝试使用concat / replace但不显示我想要的东西.. 还有其他建议吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试此查询以获取答案:

首次输出:

 UPDATE TestTable123412
 SET parentid = replace(parentId,'1.3','1.4')
 WHERE name='LOTTEMART' or Id >= (select id from TestTable123412 
 where name='LOTTEMART')

第二次输出:

 UPDATE TestTable123412
 SET parentid = replace(parentId,'1.4.10','1.4.18')
 WHERE name='LOTTEMART Jabodetabek' or Id >= (select id from TestTable123412 
 where name='LOTTEMART Jabodetabek')