SQLSERVER 字符串分割

本文介绍了在SQL Server中如何处理字符串拆分的问题,特别是在存储过程中的应用。项目要求使用存储过程并保持业务与数据库的分离。作者尝试了多种方案,包括循环调用存储过程、一次性SQL语句、文件批量插入等,最终选择了将数据拼接成特定格式的字符串传递给存储过程,然后在存储过程中进行拆分并插入。文中讨论了初始方案的不足,以及利用自定义函数和`parsename`函数的尝试,最后找到了仅需一级拆分即可满足需求的方法,强调了问题解决过程中的思考和迭代的重要性。
摘要由CSDN通过智能技术生成

情景描述:

项目中有个地方需要向数据库中插入几条数据,由此引发的一系列问题~

项目要求:

1、使用存储过程

2、代码和数据库相关业务分离

以下为几种方案:

1、最初的方案是存储过程中插入一条数据,代码中循环调用存储过程进行插入(被PASS,原因是多次调用影响效率)

2、代码中拼接成一条SQL语句,然后传给存储过程,执行一次操作即可(被PASS,要实现业务分离)

3、通过文件批量插入(暂不考虑,因为数据量不大,又考虑文件上传等因素,有点大材小用)

4、确定方案:其实根据两个要求就能确定,只能把数据一次性发给存储过程,然后进行插入。所以需要现在代码中对数据进行拼接,组合成字符串当做参数传给存储过程,然后存储过程反解析,最后进行插入(游标、事务、循环等)

代码中最后传出的字符串格式为:

"1,101,2.35;1,102,2;1,103,3.50"

即1,101,2.35为一组,每一组用;分割,每个组之间用,分割

所以需要在存储过程中进行字符串分割

1、初始方案,直接拆分

DECLARE @arr VARCHAR(128)
DECLARE @Tlist1 VARCHAR(64)
DECLARE @posStart INT
DECLARE @posCur INT
DECLARE @TID INT
 
SET @posStart = 1
SET
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值