2014-07-08 38 views
-1

当我选择我的数据时,我可以做一个简单的连接来解析一些列的值,但不是全部。我的大多数列都有一个数据值,如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

没有那个基本连接的结果看起来不像那样。 – Paparazzi

+0

你的功能是错误的,你想要它产生的输出。它需要返回一个VARCHAR,其中包含逗号分隔的值列表,而不是表格,以便按需使用。 –

回答

0

你不返回任何东西

RETURN @outList

+0

这会产生一个错误:将varchar值'Facebook,Email,Flyer'转换为数据类型int时转换失败。这是因为RETURN是一个INT,而不是一个字符串 – Baub

+0

然后改变你的函数返回一个字符串。 – Paparazzi

相关问题