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

碰到一个这样的需求,修改父文件夹名称,要全部更新掉子节点的名称。

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

如下图:

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

原来处理的sql语句:

update websiteB set websiteName=websiteName where [email protected]

显然是无法满足的,用存储过程,涉及到游标遍历,还要再查一次到临时表,性能和设计上都不满意。

如果查出来放在代码里面去处理,还需要针对结果生成多条执行语句,也不合理。

于是,打算在原来的sql语句上,利用sql函数对要更新的值进行处理:

下面贴出函数的sql语句:

这里主要介绍下 REVESE(‘’)函数,sql里面有indexOf函数,但是没有 lastIndexOf函数。

如果要实现类似lastIndexOf功能,我们可以先将字符串倒过来排,然后获取indexOf值。

“1234,” –>’,4321’

indexOf=1

lastIndexOf=len(1234,)-1=4

REVESE()函数就是实现这种倒排字符串的功能。

利用这个小技巧,上述需求得以更优雅的解决。

时间: 2024-08-03 08:24:37

sql语句中如何分割字符串进行替换的相关文章

c/cpp中如何分割字符串,类似于split的功能

在python中,如果要求当前时间的unix时间戳,我特别喜欢这么用: import time timestr = time.time() timestamp = int(timestr.split('.')[0]) 这里的split函数,我非常喜欢,在java.c#和python中都有,很方便,不用担心踩地雷,但是C/CPP中,就没有了,这点比较遗憾. 如果要处理一个字符串型的"192.168.1.254",想把每个字段都分开,怎么办呢,C标准库中有函数strtok()的实现,可以一

hibernate预编译SQL语句中的setParameter和setParameterList

使用预编译SQL语句和占位符参数(在jdbc中是?),能够避免因为使用字符串拼接sql语句带来的复杂性.我们先来简单的看下,使用预编译SQL语句的好处.使用String sql = "select * from Student where name=" + name;如果name的值是1或 "aty"或"aty'aty",就会产生下面错误的sql --ORA-01722 invalid number select * from student w

SQL语句中DateAdd 函数说明

实践例子: 将借阅表中所有记录的归还日期加15天: 执行前情况: 执行后情况如下: update 借阅 set 归还日期=DateAdd ("D",15,归还日期) [详细讲解:] 返回 返回包含一个日期的 Variant (Date),这一日期还加上了一段时间间隔. 语法 DateAdd(interval, number, date) DateAdd 函数语法中有下列命名参数: interval 必要.字符串表达式,是所要加上去的时间间隔. number 必要.数值表达式,是要加上的

SQL语句中的表操作

数据库中主要的部分是不同的表,在SQL语句中提供了一些对于表的操作.我们讨论的操作都是在SQL SERVICE中的 一.新建表: 新建表的语法格式为:CREATE TABLE 表名(列名 数据类型[完整性约束条件], 列名 数据类型 [完整性约束条件],...);其中完整性约束条件可以添加也可以不加,如果不加也可以在表定义完成后另外在添加,比如我们现在需要创建一个学生表,可以使用这样的代码来创建: create table student(Sno char(10) PRIMARY KEY, Sn

SQL语句中,Conversion failed when converting datetime from character string.错误的解决办法

在项目开发过程中,我们经常要做一些以时间为条件的查询,比如查询指定时间范围内的历史记录,然而这些时间都是从UI传递过来的参数,所以我们写的sql语句就必须用到字符串拼接.当然,在C#中写SQL语句还好处理,可以使用C#的字符串函数做对应的数据类型转换.但是,如果用的是存储过程的话,就有点纠结了.下面来说一下我在写存储过程中遇到的问题: 为了更加直接的说明问题,写如下一个简单的例子: declare @dateFrom datetime; declare @dateTo datetime; dec

转王波洋,SQL语句中的 for XML Path('')

FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主. 一.FOR XML PATH 简单介绍              那么还是首先来介绍一下FOR XML PATH ,假设现在有一张兴趣爱好表(hobby)用来存放兴趣爱好,表结构如下: 接下来我们来看应用FOR XML PATH的查询结果语句如下: SELECT * FROM @hobby FO

sql语句中#{}和${}的区别

#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id". $将传入的数据直接显示生成在sql中.如:order by userid,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order by id.

Lambda表达式Contains方法(等价于SQL语句中的like)使用注意事项

貌似已经半年多没写一篇帖子了,充分的说明要么老总一天折腾的让人心齐疲惫,没心情去写:要么另外一种可能就是自己不思进取,说白了就是懒.好在这种状态在今天被打破了.MoNey加油. 众所周知,想在EntityFrame实体框架中使用类似于SQL语句中like的效果时就的使用Contains方法了. 可是关于Contains方法使用过程中会出现的细节问题,并没有专门的文章来指出来. 小弟才疏学浅,一直只做些b/s开发,因此对于SQL的高级应用不需要接触,长期使用Lambda 表达式的过程中,已经彻底忘

sql 语句中count()有条件的时候为什么要加上or null

参考:https://blog.csdn.net/qq_32719287/article/details/79513164 1.sql 语句中count()有条件的时候为什么要加上or null. 如count(province = '浙江' or NULL) 这部分,为什么要加上or NULL,直接count(province='浙江')有什么问题吗?不就是要找province = '浙江'的数据吗,为什么要计算NULL的数据. 答案:因为当 province不是浙江时 province='浙