您的位置:首页 > 数据库

SQL解析有两个,号分隔的字符串方法

2015-12-29 20:38 337 查看
if OBJECT_ID('tempdb..#tb') is not null

drop table #tb;

declare @comText varchar(8000);

create table #tb(transportNo varchar(20),billno varchar(20),price decimal(16,2));

set @comText='150830001001,1,10.00;1508250101,1,12.10;1508290024,3,8.00';

set nocount on;

declare @semicolonlast int,@semicolonCurrent int;

declare @singleCmdText varchar(100);

declare @transportNo varchar(20);

declare @commalast int,@commaFirst int,@commaSecond int;

declare @lastCmdText varchar(100);

declare @billno varchar(20);

declare @price varchar(20);

set @semicolonlast=0;

while 1=1

begin

set @semicolonCurrent=CHARINDEX(';',@comText,@semicolonlast);

if @semicolonCurrent>0

set @singleCmdText=SUBSTRING(@comText,@semicolonlast,@semicolonCurrent-@semicolonlast);

else

set @singleCmdText=SUBSTRING(@comText,@semicolonlast,LEN(@comText)-@semicolonlast+1);

--print @singleCmdText;

set @semicolonlast=@semicolonCurrent+1;

set @commaFirst=0;

set @commaSecond=0;

set @commaFirst=CHARINDEX(',',@singleCmdText,0);

set @commaSecond=CHARINDEX(',',@singleCmdText,@commaFirst+1);

set @transportNo=SUBSTRING(@singleCmdText,0 ,@commaFirst);

set @billno=SUBSTRING(@singleCmdText,@commaFirst+1,@commaSecond-@commaFirst-1);

set @price=SUBSTRING(@singleCmdText,@commaSecond+1,LEN(@singleCmdText)-@commaSecond);

insert #tb(transportNo,billno,price)values(@transportNo,@billno,Convert(decimal,@price));

if @semicolonCurrent=0

  break;

end

select * from #tb;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: