来自连接字符串的 SQL where 子句

标签 sql sql-server sql-server-2005

我有一个字符串,其中包含一个逗号分隔的 id 列表,我想在 where 子句中使用它。

我怎样才能实现这个目标?基本上我有:

set @ids = '5,8,14,5324,'

SELECT * FROM theTable WHERE Id IN (@ids)

但是 @ids 是 varchar,Id 是 int。

非常感谢任何想法。

最佳答案

替代动态 SQL 的另一种选择是将 @ids 解析为 #TempTable(解析函数的一个示例是 here ),然后加入它。

select *
    from theTable t1
        inner join #TempTable t2
            on t1.Id = t2.Id

或者你可以完全绕过#TempTable(以下代码假设解析函数来自上面的链接)

select *
    from theTable t1
        inner join dbo.fnParseStringTSQL(@ids, ',') t2
            on t1.Id = cast(t2.string as int)

关于来自连接字符串的 SQL where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3462571/

相关文章:

c++ - 如何在另一个表中使用表的最后插入的 id

c# - Azure WCF 服务无法连接到 SQL Azure

sql-server - 选择最高百分比,在 SQL Server 中,关闭 1?

mysql - 在 Access VBA 中循环 Access strSQL 中的日期

sql - 联合查询在一列上不同

c# - Dapper/SQL Server - 从包含 Insert 和 Select 语句的存储过程中获取输出

sql - 存储过程中的输出参数不起作用

sql - 如何使用需要从同一表中的其他几行中整理出来的数据更新行?

sql - 有没有办法在 SSIS 的数据流中执行 T-SQL 代码?

sql - 在 SQL Server 中将整数值转换为小时值 (AM/PM)