SQL分段读取技巧

declare @v_i int,@v_temp varchar(300),@v_outQty numeric(10,4),@v_Pric numeric(10,4),@v_Pch varchar(30),@v_Result varchar(4000) set @v_Result='000523000200|1.4|520.03;000524000300|2.0|32.00;000528000300|11.0|345.00' set @v_i=charindex(';',@v_Result) if @v_i>0 --下帐跨批次,则分解 while 1=1 begin set @v_i=charindex(';',@v_Result) if @v_i<1 --最后段 begin set @v_temp=@v_Result set @v_Pch=substring(@v_temp,0,charindex('|',@v_temp)) set @v_temp=substring(@v_temp,charindex('|',@v_temp)+1,len(@v_temp)-charindex('|',@v_temp)) set @v_Pric=cast(substring(@v_temp,0,charindex('|',@v_temp)) as numeric(10,4)) set @v_outQty= substring(@v_temp,charindex('|',@v_temp)+1,len(@v_temp)-charindex('|',@v_temp)) break end set @v_temp=substring(@v_Result,0,@v_i) set @v_Result=substring(@v_Result,@v_i+1,len(@v_Result)-@v_i) set @v_Pch=substring(@v_temp,0,charindex('|',@v_temp)) set @v_temp=substring(@v_temp,charindex('|',@v_temp)+1,len(@v_temp)-charindex('|',@v_temp)) set @v_Pric=substring(@v_temp,0,charindex('|',@v_temp)) set @v_outQty= substring(@v_temp,charindex('|',@v_temp)+1,len(@v_temp)-charindex('|',@v_temp)) end

你可能感兴趣的:(Ms,SQL,Server)