java sql数组_Sql数组类型解决方案

众所周知,Sql里面居然没有数组类型,让大家每次在存储过程或者触发器中处理数组的时候都很麻烦。我也遇到这样的情况,所以就特意写了两个自定函数,以 方便自己今后在Sql中处理数组。入行不久,懂得不多,贴出来大家探讨一下,希望大家帮我完善 谢谢

通过连个自定义函数来处理Sql中的数组

第一步:数组长度的函数

SQL code

Alter Function arrLen(@string varchar(1000),@SpaceMark Varchar(200))

--@String 眼拆分的字符串 @SpaceMark 分割符

Returns int

As

Begin

Declare @i Int

Set @i = (Len(@string) - Len(Replace(@string,@Spacemark,'')))/Len(@SpaceMark)

Return(@i)

End

第二步:按索引值取数组中的数据

SQL code

Alter Function arrList(@String varchar(8000),@SpaceMark Varchar(8000),@arrStation int)

returns varchar(8000)

As

Begin

Declare @newString varchar(8000)

Declare @ReturnString Varchar(8000)

Set @NewString = @String

Declare @i int

Set @i = 0

if(@arrStation>0 And @arrStation<=Dbo.arrLen(@String,@SpaceMark))

Begin

While(@i

Begin

Set @NewString = SubString(@NewString,CharIndex(@SpaceMark,@NewString)+1,Len(@NewString))

Set @i = @i + 1

End

End

If(@arrStation<0)

Begin

Set @ReturnString = '上标越界'

End

Else If(@arrStation

Begin

Set @ReturnString = SubString(@NewString,1,CharIndex(@SpaceMark,@NewString)-1)

End

Else if(@arrStation=dbo.arrLen(@String,@SpaceMark))

Begin

Set @ReturnString = @newString

End

Else

Begin

Set @ReturnString = '下标越界'

End

Return(@ReturnString)

End

测试程序:

Declare @a varchar(1000)

Declare @i int

Set @i = 0

Set @a = 'A,B,C,D,E,F,G,H,I'

While(@i <=Dbo.arrLen(@a,','))

Begin

Print Dbo.arrList(@a,',',@i)

Set @i = @i + 1

ENd

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值