我的 IN SQL 语句有一个小问题。我只是想知道是否有人可以帮助我?
@Ids = "1,2,3,4,5"
SELECT * FROM Nav WHERE CONVERT(VARCHAR,NavigationID) IN (CONVERT(VARCHAR,@Ids))
返回时出现以下错误,我确信这非常简单!
Conversion failed when converting the varchar value '1,' to data type int.
最佳答案
SQL IN 子句不接受单个变量来表示值列表——如果不使用动态 SQL,任何数据库都不会接受。否则,您可以use a Table Valued Function (SQL Server 2000+) 从列表中提取值并将它们作为可连接的表返回。
动态 SQL 示例:
EXEC('SELECT *
FROM Nav
WHERE NavigationID IN ('+ @Ids +')')
我建议阅读The curse and blessings of dynamic SQL在 SQL Server 上使用动态 SQL 之前。
关于sql - TSQL 语句 IN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4480001/