使用SQl方法把多行字符直接转换成相应的表输出

要操作订单时,需要先把订单的数据放入到数据库中,然后进行排单操作。以前的做法是先把数据放入数据库中的一张表中。然后再操作。还有一个方法是反需要操作的数据作为参数传入数据库中,然后直接操作。

首先建立一个存储过程,把一串字符输出为表的形式。

<pre name="code" class="sql">ALTER proc [dbo].[pc_getRowFromText](@text varchar(8000),@spltchar char(1))
as
--declare @text varchar(8000),@spltchar char(1);
begin
	--set @text='00648,10,216,10,0';
	--set @spltchar=',';
	declare @selecttext varchar(8000);
	set @selecttext='select ' + ''''+REPLACE(@text,@spltchar,''',''') + '''';
    execute(@selecttext);
end
GO


 然后在需要使用的地方建立 相应的表格。 

declare @backorder nvarchar(2000);
set @backorder='1024;12.00;10;1,1034;12.00;10;1,1044;12.00;10;1';

declare @tb table(code varchar(20),price varchar(20),qut varchar(20),giftqut varchar(20))--建立一个表变量

--create table #tb(batsaleno varchar(30));
declare @commalast int,@commaCurrent int;
declare @singleCmdText varchar(30);
set @commalast=0;
while 1=1
begin
set @commaCurrent=CHARINDEX(',',@backorder,@commalast);
if @commaCurrent>0
set @singleCmdText=SUBSTRING(@backorder,@commalast,@commaCurrent-@commalast);
else
set @singleCmdText=SUBSTRING(@backorder,@commalast,LEN(@backorder)-@commalast+1);
set @commalast=@commaCurrent+1;
insert @tb exec pc_getRowFromText @text=@singleCmdText,@spltchar=';'

if @commaCurrent=0
 break;
end
select * from @tb
最后进行类型的转换得到表格

create table #tb(code varchar(20),price decimal(14,2),qut int,giftqut int);
insert #tb(code,price,qut,giftqut) 
select code,Convert(decimal(14,1),price),Convert(int,qut) ,Convert(int,giftqut) from @tb;

select * from #tb;






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值