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()函数就是实现这种倒排字符串的功能。
利用这个小技巧,上述需求得以更优雅的解决。
规则是保留子节点按-分割后的最后一个元素不变,前面的字符串更新为父节点名称。
如下图:
假如我修改父节点 “东南网-西岸时评 测试”-> “东南网测试”,则下面的节点应该要这样的结果:
原来处理的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()函数就是实现这种倒排字符串的功能。
利用这个小技巧,上述需求得以更优雅的解决。
相关文章推荐
- 如何用SQL语句批量替换数据库字符串
- mysql替换表中的字符串的sql语句
- 在db2中,如何在sql语句中将yyyymmdd格式的字符串转换为timestamp
- 在PL/SQL中如何分割字符串(Split String)
- mysql 替换字符串 sql语句
- SQL语句--一个简单的字符串分割函数
- 在SQL语句中如何将字符串变量传递给In语句
- sql语句,如何替换字段里的单引号
- SQL语句练习实例之九 ——对字符串进行排序
- SQL2005 一条语句搞定字符串分割后合并
- 如何进行oracle10g的sql语句跟踪
- Transact-SQL如何进行字符串检索
- 如何将一段SQL语句(多条)分割为SQL语句数组
- SQL语句中如何截取字段中的数字部分然后进行精确查找
- 如何在T-SQL中获取逗号分割的字符串数据中的元素?
- 在SQL语句中如何将字符串变量传递给In语句
- SQL语句实现分割字符串
- SQL语句实现分割字符串
- 如何使用SQL语句将行和列进行转换?
- 如何用SQL语句替换字段中的某个字符