情况:已通过函数实现所需要的结果!结果为
COL
12
45
78
89现要求从另外一表中[此表包含了col下]取出与COL相同的结果
通过一个函数得到的结果 如何去跟一个存在的表进行 inner join ?
以下是函数内容CREATE
FUNCTION [dbo].[LewiSplitID](@String NVARCHAR(4000), @SplitChar NVARCHAR(10))
RETURNS @table TABLE (COL VARCHAR (100)) AS
BEGIN
DECLARE @Index INT
SET @Index = 0
IF @String <> ''
BEGIN
IF RIGHT(@String,1)<> @SplitChar
SET @String = @String + @SplitChar
IF LEFT(@String,1)= @SplitChar
SET @String = STUFF(@String, 1, 1, '')
End
WHILE CHARINDEX(@SplitChar,@String,@Index) > 0
BEGIN
INSERT INTO @table(COL)
VALUES (SUBSTRING(@String, @Index, CHARINDEX(@SplitChar, @String,@Index) - @Index))
SET @index = CHARINDEX(@SplitChar, @String, @Index) + 1
END
RETURN
END
调用上面函数得到了
col
1
3
4
5
6
个结果,如何冲另外一个表,假设为 xx
id
1
2
3
4
5
6
7
8
中取出id和col相同的 结果
COL
12
45
78
89现要求从另外一表中[此表包含了col下]取出与COL相同的结果
通过一个函数得到的结果 如何去跟一个存在的表进行 inner join ?
以下是函数内容CREATE
FUNCTION [dbo].[LewiSplitID](@String NVARCHAR(4000), @SplitChar NVARCHAR(10))
RETURNS @table TABLE (COL VARCHAR (100)) AS
BEGIN
DECLARE @Index INT
SET @Index = 0
IF @String <> ''
BEGIN
IF RIGHT(@String,1)<> @SplitChar
SET @String = @String + @SplitChar
IF LEFT(@String,1)= @SplitChar
SET @String = STUFF(@String, 1, 1, '')
End
WHILE CHARINDEX(@SplitChar,@String,@Index) > 0
BEGIN
INSERT INTO @table(COL)
VALUES (SUBSTRING(@String, @Index, CHARINDEX(@SplitChar, @String,@Index) - @Index))
SET @index = CHARINDEX(@SplitChar, @String, @Index) + 1
END
RETURN
END
调用上面函数得到了
col
1
3
4
5
6
个结果,如何冲另外一个表,假设为 xx
id
1
2
3
4
5
6
7
8
中取出id和col相同的 结果
对象名 'dbo.LewiSplitID' 无效。
SELECT * From xxx C INNER JOIN dbo.LewiSplitID D ON C.ID=D.COL
也不行,为何?/* Result : "对象名 'dbo.LewiSplitID' 无效。 3 rows fetched (234 ms)" */