zoukankan      html  css  js  c++  java
  • 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<@arrStation)
    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<dbo.arrLen(@String,@SpaceMark))
    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



    欢迎加入JAVA技术交流QQ群:179945282

    欢迎加入ASP.NET(C#)交流QQ群:17534377


  • 相关阅读:
    统计字符串中每个字母出现的次数
    三次握手和四次挥手
    select后面不能包含group by 后面没有的列
    常用adb命令
    replace和replaceAll的区别
    java统计一个字符串中某个字串出现的次数
    大厂如何解决分布式事务
    ADB 用法大全
    PBN飞越转弯Flyover衔接TF、CF航段保护区组图
    PBN旁切转弯保护区组图
  • 原文地址:https://www.cnblogs.com/q149072205/p/2276883.html
Copyright © 2011-2022 走看看