sql - TSQL 语句 IN

标签 sql sql-server t-sql

我的 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/

相关文章:

c# - 使用连接字符串连接到数据库以使用 LINQ

sql - 通过提供 "not contained in aggregate function"(SQL-server) 自加入和分组

sql-server - 在 SQL 中将数字提高到分数幂

mysql - 如何获取select语句中第一列的计数

sql - 子字符串sql server

mysql - 对于一组历史记录来说,性能最好的表索引是什么?

php - 如何选择高尔夫锦标赛mysql的最佳成绩?

sql-server - SQL Server : replace sequence of same characters inside Text Field (TSQL only)

sql - 可以监视/模拟 Sql Server 用户定义的函数吗?

sql-server - 我们可以使用 Group by 子句执行像删除这样的 DML 操作吗?