标签:
碰到一个这样的需求,修改父文件夹名称,要全部更新掉子节点的名称。
规则是保留子节点按-分割后的最后一个元素不变,前面的字符串更新为父节点名称。
如下图:
假如我修改父节点 “东南网-西岸时评 测试”-> “东南网测试”,则下面的节点应该要这样的结果:
原来处理的sql语句:
update websiteB set websiteName=websiteName where treeID=@id
显然是无法满足的,用存储过程,涉及到游标遍历,还要再查一次到临时表,性能和设计上都不满意。
如果查出来放在代码里面去处理,还需要针对结果生成多条执行语句,也不合理。
于是,打算在原来的sql语句上,利用sql函数对要更新的值进行处理:
下面贴出函数的sql语句:
这里主要介绍下 REVESE(‘’)函数,sql里面有indexOf函数,但是没有 lastIndexOf函数。
如果要实现类似lastIndexOf功能,我们可以先将字符串倒过来排,然后获取indexOf值。
“1234,” –>’,4321’
indexOf=1
lastIndexOf=len(1234,)-1=4
REVESE()函数就是实现这种倒排字符串的功能。
利用这个小技巧,上述需求得以更优雅的解决。
标签:
原文地址:http://www.cnblogs.com/mophes/p/5804134.html