IN 문을 실행해야하는 저장 프로 시저가 있습니다. 문자열 (쉼표로 구분 된 정수 목록)을 int로 변환하는 방법을 알고 싶습니다. 이 예에서는 positionID
을 변환해야합니다. 도와주세요. 당신은 SQL 서버 2008는 이제 테이블 유형을 지원한다는 사실을 이용할 수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 서버는 "in"에 전체 csv 문자열을 삽입하고'... IN (1,2,3, ...)'와 같이 일련 번호가 아닌 하나의 엔티티로 취급합니다. –
이 [질문] 참조 (http://stackoverflow.com/questions/3449183/error-using-csv-string-with-in-operator) –
그냥 백만 가지 '쉼표로 구분 된 문자열'함수 중 하나를 사용하여 TVF 및 공동 TVF 출력 –