0

我正在尝试将外部应用放在表变量上,但出现如下错误

无法调用表上的方法。

我有拆分功能,将字符串拆分为一定长度

CREATE FUNCTION Split(@String varchar(MAX), @SplitLength int) 
RETURNS @Result TABLE (Splited varchar(MAX))
AS
BEGIN

Declare @Cnt int
    Set @Cnt = FLOOR((len(@String)/@SplitLength));

   While @Cnt!=0
    Begin
     SET @Cnt=@Cnt-1;
        While len(@String)>@SplitLength 
        Begin

         INSERT INTO @Result  VALUES (SUBSTRING(@String,1,@SplitLength))

         SET @String=SUBSTRING(@String,@SplitLength+1,len(@String)-@SplitLength) 

        End     

    End

RETURN
END

我与包含要拆分字符串的列的表变量一起加入

    DECLARE @LeftSuper TABLE
(
KeyTerm VARCHAR(MAX),
Data VARCHAR(MAX) ,

)

查询如下 产生错误(不能调用表上的方法)

 select KeyTerm ,D.Splited from @LeftSuper
 outer apply [Split](@LeftSuper.Data,300) as D

注意:代码适用于 db 中的 Real Table。

4

1 回答 1

5

为表变量引入一个别名并在表达式中使用它:

select KeyTerm ,D.Splited from @LeftSuper ls
 outer apply [Split](ls.Data,300) as D

这实际上是相当普遍的——因为表可能在查询中出现多次,每次在@LeftSuper查询中遇到时,它都被视为对表的引用——而不是已经添加的引用——别名允许你来参考。

于 2013-11-19T08:35:39.170 回答