Tsql 需要在sql server中使用数组或任何建议创建函数的概念

Tsql 需要在sql server中使用数组或任何建议创建函数的概念,tsql,excel,vba,Tsql,Excel,Vba,下面是数据示例 ss-tt(1/21/2014 9:47:12 AM)->bb-tt-uu(02/07/14 11:09:59) 上述数据存储在表的一列中。现在我要做的是,拆分“date”,后面跟“sstt”,并将其粘贴到另一列中的同一行中 为此,我想在SQLServer中创建一个函数。在excel(VBA)中,使用数组创建函数非常容易,但在Sql server中,我不知道如何使用数组概念 下面是我在excel(VBA)中为相同计算创建的函数 Sub readExcell1()

下面是数据示例

ss-tt(1/21/2014  9:47:12 AM)->bb-tt-uu(02/07/14 11:09:59)
上述数据存储在表的一列中。现在我要做的是,拆分“date”,后面跟“sstt”,并将其粘贴到另一列中的同一行中

为此,我想在SQLServer中创建一个函数。在excel(VBA)中,使用数组创建函数非常容易,但在Sql server中,我不知道如何使用数组概念

下面是我在excel(VBA)中为相同计算创建的函数

    Sub readExcell1()

     Dim arr() As Variant
     Dim token As Variant
     Dim innertoken As Variant
     Dim first As String
     Dim second As String
     Dim ind As Integer


     arr = Range("D2:D849")
     Dim R As Long
    Dim C As Long
    rownum = 1
    colnum = 1
    For R = 1 To UBound(arr, 1) ' First array dimension is rows.
        'MsgBox "processing row " & R
        'MsgBox arr(R, 1)


        token = Split(arr(R, 1), "->")

        For i = LBound(token) To UBound(token)
            'MsgBox token(i)
            innertoken = Split(token(i), "(")
            first = innertoken(0)
            first = Trim(first)
            second = innertoken(1)
            If first = "payroll-apac" Then
                ind = 1 + R
                second = Replace(Trim(second), ")", "")
                Application.Range("H" & ind).Value = second
                GoTo Label1
            End If

        Next i
Label1:
    Next R


End Sub

这应该是你想要的。显然,您可以单独处理前缀和分隔符,而不是使用列

declare @table table (
[value]       [nvarchar](max)
, [prefix]    [sysname]
, [separator] [sysname]
, [calculated] as substring([value]
             , len([prefix]) + 1
             , charindex([separator]
                         , [value]) - len([prefix]) - 1));
--
insert into @table
        ([value]
         , [prefix]
         , [separator])
values      (N'ss-tt(1/21/2014 9:47:12 AM)->bb-tt-uu(02/07/14 11:09:59)'
         , N'ss-tt('
         , N')');
--
select [value]
   , [calculated]
from   @table; 

请不要使用不适用于您的问题的标签