您的位置:首页 > 数据库

sql语句中如何分割字符串进行替换

2016-08-24 18:10 357 查看
碰到一个这样的需求,修改父文件夹名称,要全部更新掉子节点的名称。

规则是保留子节点按-分割后的最后一个元素不变,前面的字符串更新为父节点名称。

如下图:





假如我修改父节点 “东南网-西岸时评 测试”-> “东南网测试”,则下面的节点应该要这样的结果:





原来处理的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()函数就是实现这种倒排字符串的功能。

利用这个小技巧,上述需求得以更优雅的解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: