mysql 按逗号转成_sql中如何实现逗号隔开的字符串转换成列数据

以下是存储过程,我平时用的

USE [db01]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

create PROCEDURE [dbo].[P_公共_单列值转多行]

@tb_from nvarchar(255), --源表

@tb_to nvarchar(255), --临时存放表,临时表和源表都要有以下两个字段:主字段,分列段

@zhu_lie nvarchar(255), --主字段名,如ID,

@feng_lie nvarchar(255) --要分列的列名,如“姓名”

AS

BEGIN

SET NOCOUNT ON;

declare @zhu_value nvarchar(255) --主列数值

declare @feng_value nvarchar(500) --分列数值

declare @sql nvarchar(500) --sql语句

declare @weizhi1 as integer --记录第一个分号位置

declare @weizhi2 as integer --记录第二个分号位置

exec ('declare mycursor cursor for (select ' + @zhu_lie + ', '+ @feng_lie +' from ' + @tb_from + ')')

open mycursor

fetch next from mycursor into @zhu_value,@feng_value

while @@fetch_status = 0

begin

set @weizhi1 = 1

set @weizhi2 = 1

while @weizhi2 > 0

begin

set @weizhi2 = charindex(';',@feng_value,@weizhi1)

set @sql = ''

if @weizhi2 =0

begin

set @sql = 'insert into '+@tb_to+'('+@zhu_lie+','+@feng_lie +') values ('''+@zhu_value+''' ,'''+substring(@feng_value,@weizhi1,len(@feng_value))+''')'

exec(@sql)

end

else

begin

set @sql = 'insert into '+@tb_to+'('+@zhu_lie+','+@feng_lie +') values ('''+@zhu_value+''' ,'''+substring(@feng_value,@weizhi1,@weizhi2-@weizhi1)+''')'

exec(@sql)

set @weizhi1= @weizhi2 + 1

end

end

fetch next from mycursor into @zhu_value,@feng_value

end

close mycursor

deallocate mycursor

END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值