我有一个需要运行IN语句的存储过程。我想知道一种方法来将字符串(逗号分隔整数列表)转换为int。在这个例子中,positionID
需要转换。请帮忙。由于SQL Server存储过程将varchar转换为int
这里是我的存储过程:
Create PROCEDURE [dbo].[spCount]
@year varchar(50),
@positionID varchar(50)
AS
BEGIN
Select
ApplicantID, [Name], PositionID, COUNT(*) AS Votes
FROM dbo.vwLog
WHERE Year = @year And PositionID in (@positionID)
GROUP BY ApplicantID, [Name], PositionID
Order By PositionID, Votes DESC
END
如果不使用动态sql,它会变得很难看。如果你使用的是MySQL,我会建议使用它的'find_in_set()'函数,这可以完美地工作。但SQL服务器会将完整的csv字符串插入到“in”中,并将其视为单个enity,而不是一系列不同的数字,就像您已经写入'... IN(1,2,3,...) – 2012-01-03 21:43:08
请参阅这个[问题](http://stackoverflow.com/questions/3449183/error-using-csv-string-with-in-operator) – 2012-01-03 21:47:23
只是使用百万分隔逗号分隔字符串函数之一返回一个TVF和联合TVF输出 – 2012-01-03 21:47:36