当我选择我的数据时,我可以进行简单的连接来解析某些列的值,但不是全部。我的大多数列都有一个数据值,如10997,但其他列有多个数据值,如10997,10889,10123。我创建了一个函数来解析我需要的文本中的三个单独的值,但我有试图找出如何使用它的麻烦。
我有一个像这样的基本联接:
SELECT COLUMN1, COLUMN2, COLUMN3
FROM TABLE1 A
JOIN TABLE2 B ON A.ID = B.ID
结果如下:
Column1 Column2 Column3
1 11272, 11273, 11274, 11277 7712
我创建的函数使用声明的变量和表变量。
我希望能做的事情是这样的:
SELECT COLUMN1, dbo.MyFunction(COLUMN2), COLUMN3
FROM TABLE1 A
JOIN TABLE2 B ON A.ID = B.ID
导致:
Column1 Column2 Column3
1 Radio, Flyer, Internet, Bar 7712
问题是我的函数使用变量,我无法找到将它放在SQL中的位置(表值函数,存储过程等),所以我可以使用它我喜欢的方式。每个区域都有自己的限制。
编辑:这是我为我的函数创建的代码,目前它是一个多语句表值函数
DECLARE @looper INT, @res VARCHAR(100)
DECLARE @outList VARCHAR(300)
SET @outList = ''
DECLARE @tmpa TABLE (Item INT)
INSERT INTO @tmpa
SELECT Item
FROM fn_Split (', ', @input)
SELECT @looper = MIN(Item)
FROM @tmpa
WHILE @looper IS NOT NULL
BEGIN
SELECT @res = NAME
FROM FSM_CustomFormSelectOptions CFSO
WHERE ID = @looper
--print @res
SET @outList = @outList + @res + ', '
SELECT @looper = MIN(Item) FROM @tmpa WHERE Item > @looper
END
SET @outList = LEFT(@outList, LEN(@outList)-1)
INSERT INTO @Answers
VALUES(@outList)
RETURN
示例电话是:
select * from fn_GetAnswerText( '11273, 11274, 11275')
答案 0 :(得分:0)
你没有归还任何东西
RETURN @outList