MS SQL SERVER中的字符串分割

--字符串分割
Declare @TUserID Table(UserID varchar(50))
Declare @chvTestString varchar(1024)
Declare @i int,@i_t int
Declare @chvString varchar(50)
Set @chvString=''
Set @chvTestString='1,23,456,6789,43,21'
Set @i=1
Set @i_t=1
While @i<=len(@chvTestString)
 begin
 if SubString(@chvTestString,@i,1)=','
  begin
  Set @chvString=SubString(@chvTestString,@i_t,@i-@i_t)
  Insert into @TUserID values(@chvString)
  Set @i_t=@i+1
  end
 
 Set @i=@i+1
 end
Insert into @TUserID values(SubString(@chvTestString,@i_t,@i-@i_t))
Select * from @TUserID
--下面对字符串分割做了改进,由于要工作需要的中文或者数字类型,并且可以随意修改分隔符号

--批量查询用户的银子数量(含保险柜和现金)可以使用由','分割开的用户ID或者用户名查询
--字符串分割
/*
Designed By whbo
Designed At 2005-10-25 16:00:00
*/
Use Money
Declare @chvTestString varchar(1024)
Declare @i int,@i_t int
Declare @Flag tinyint
Declare @chvString varchar(50)
Declare @chvReplaceTag varchar(5)
Set @chvString=''
Set @Flag=2          --Flag确定使用ID还是用户名,1:使用用户名;2:使用ID            <1>
Declare @TUserID Table(LoginName varchar(50),UserID int)
Set @chvTestString='9547830,10348133' --这里用','分开各用户的ID,或者用户名  <2> 
Set @i=1
Set @i_t=1
Set @chvReplaceTag=','        --如果字符串中用的其他分隔符号,比如用';'分隔,令 Set @chvReplaceTag=';'
Set @chvTestString=Replace(@chvTestString,@chvReplaceTag,',')
While @i<=len(@chvTestString)
 begin
 if SubString(@chvTestString,@i,1)=','
  begin
  Set @chvString=SubString(@chvTestString,@i_t,@i-@i_t)
  if @Flag=1
  Insert into @TUserID values(@chvString,0)
  if @Flag=2
  Insert into @TUserID values('',Convert(int,@chvString))
  Set @i_t=@i+1
  end
 
 Set @i=@i+1
 end
if @Flag=1
Insert into @TUserID values(SubString(@chvTestString,@i_t,@i-@i_t),0)
if @Flag=2
Insert into @TUserID values('',Convert(int,SubString(@chvTestString,@i_t,@i-@i_t)))
--Select * from @TUserID
--更新用户的ID信息
--这里使用了跨表更新
if @Flag=1
 Update @TUserID Set UserID=b.UserID from @TUserID a,UserCenter.dbo.AllUser b Where a.LoginName=b.LoginName
if @Flag=2
 Update @TUserID Set LoginName=b.LoginName from @TUserID a,UserCenter.dbo.AllUser b Where a.UserID=b.UserID
Select * from @TUserID
--下面查询用户的银子信息
Select a.UserID,c.LoginName,a.Amount,b.Money From Money a,Bank b,@TUserID c where a.UserID=c.UserID and a.UserID=b.UserID
Group by a.UserID,c.LoginName,a.Amount,b.Money
--下面可以更新这批用户的信息
Declare @intWantedAmount int
Set @intWantedAmount=0    --这里设置要给用户增加的现金数量
Update Money Set Amount=Amount+@intWantedAmount From Money a,@TUserID b where a.UserID=b.UserID
--下面可以删除这批用户的保险柜 不要轻易使用!
--
Go

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值