在 Sybase 中传递多个值
Pass multiple values in Syabse
带着一个小问题又回来了。希望我能在这里有所收获。
我正在处理一份报告,SQL Server Reporting Services 2012,数据库是 Sybase ASE。
我的报告参数之一可以有多个值。让我们将参数命名为@Fruit。它可以有多个值。因此,如果用户从列表中选择 Apple 和 Mango,它应该传递给后端的查询。
参数给出的值为:Apple,Mango
现在我需要通过以下方式将其传递给查询。
SELECT
COLUMN1,
COLUMN2,
COLUMN3
FROM DBO.TABLE_NAME
WHERE COLUMN2 IN ('Apple','Mango')
问题:我一次只能传递一个水果名称。但不能传递超过一个值。我做了一些研究,发现它是 Sybase 的问题。它不能取多个值。
我相信有人可能找到了解决方法。只需要让它工作。
提前致谢!
您可以在表达式中使用 join 从列表中创建逗号分隔的字符串:
strFruits= Join(Parameters!fruits.Value,",")
那么您的 where 子句将如下所示:
WHERE CHARINDEX(',' + COLUMN2 + ',' , ',' + @strFruits + ',')>0
在字符串的开头和结尾添加','是为了确保找到搜索字符串,即使它位于逗号分隔列表的开头或结尾。
带着一个小问题又回来了。希望我能在这里有所收获。
我正在处理一份报告,SQL Server Reporting Services 2012,数据库是 Sybase ASE。 我的报告参数之一可以有多个值。让我们将参数命名为@Fruit。它可以有多个值。因此,如果用户从列表中选择 Apple 和 Mango,它应该传递给后端的查询。
参数给出的值为:Apple,Mango 现在我需要通过以下方式将其传递给查询。
SELECT
COLUMN1,
COLUMN2,
COLUMN3
FROM DBO.TABLE_NAME
WHERE COLUMN2 IN ('Apple','Mango')
问题:我一次只能传递一个水果名称。但不能传递超过一个值。我做了一些研究,发现它是 Sybase 的问题。它不能取多个值。
我相信有人可能找到了解决方法。只需要让它工作。
提前致谢!
您可以在表达式中使用 join 从列表中创建逗号分隔的字符串:
strFruits= Join(Parameters!fruits.Value,",")
那么您的 where 子句将如下所示:
WHERE CHARINDEX(',' + COLUMN2 + ',' , ',' + @strFruits + ',')>0
在字符串的开头和结尾添加','是为了确保找到搜索字符串,即使它位于逗号分隔列表的开头或结尾。