SQL查询结果WHERE ID IN(@ids)无法将nvarchar()转换为int

Iam*_*vic 3 c# sql-server

我无法解决使用选择记录的问题WHERE IN ().我正在C#后端工作,我发送一个逗号分隔的id值字符串.我期待查询该字符串中的所有记录.

这是我的示例字符串:

"548,549,550,551,712,713"
Run Code Online (Sandbox Code Playgroud)

这是我的 SQL Stored Procedure

@ids nvarchar(200)

SELECT * FROM Users
WHERE USers.ID IN (@ids)
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误:

将nvarchar值'548,549,550,551,712,713'转换为数据类型int时转换失败.

谢谢

M.A*_*Ali 8

SQL Server 2016及更高版本

 Declare @ids nvarchar(200) = '123,456';

 Select *
 From Users
 Where ID  IN ( Select Value from STRING_SPLIT ( @ids , ',' ))  
Run Code Online (Sandbox Code Playgroud)

对于旧版本的SQL Server 2005 - 2014

 Declare @ids nvarchar(200) = '123,456'; --<-- Comma delimited list of Client Ids


 Select *
 From Users
 Where ID  IN (
              SELECT  CAST(RTRIM(LTRIM(Split.a.value('.', 'VARCHAR(100)'))) AS INT) IDs
              FROM (
                     SELECT Cast ('<X>' 
                                  + Replace(@ids, ',', '</X><X>') 
                                  + '</X>' AS XML) AS Data
                      ) AS t CROSS APPLY Data.nodes ('/X') AS Split(a) 
                    )
Run Code Online (Sandbox Code Playgroud)