san*_*tap 0 sql sql-server table-variable table-valued-parameters
我试图将外部应用放在表变量上,但我收到如下错误
无法在表上调用方法.
我有Split功能,将字符串拆分为一定长度
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
Run Code Online (Sandbox Code Playgroud)
我与表变量连接,其中包含要分割字符串的列
DECLARE @LeftSuper TABLE
(
KeyTerm VARCHAR(MAX),
Data VARCHAR(MAX) ,
)
Run Code Online (Sandbox Code Playgroud)
查询如下,哪个生成错误(无法调用表上的方法)
select KeyTerm ,D.Splited from @LeftSuper
outer apply [Split](@LeftSuper.Data,300) as D
Run Code Online (Sandbox Code Playgroud)
注意:代码适用于db中的Real Table.
引入表变量的别名并在表达式中使用它:
select KeyTerm ,D.Splited from @LeftSuper ls
outer apply [Split](ls.Data,300) as D
Run Code Online (Sandbox Code Playgroud)
这实际上相当普遍 - 因为表在查询中可能出现多次,每次@LeftSuper在查询中遇到它时,它都被视为对表的新引用 - 而不是已经添加的引用 - 别名允许你参考.
| 归档时间: |
|
| 查看次数: |
3721 次 |
| 最近记录: |