将参数传递给 SQL select 语句 IN 子句的行为很奇怪。

2023-12-09

我有以下查询返回 2 条记录(在 DataSet 的查询构建器中)

SELECT        EmpID, Name, id
FROM          Users
WHERE        (CAST(id AS Varchar(20)) IN ('5688','5689'))

现在,如果我执行相同的查询,而不是从后面的代码传递参数: String param = "'5688','5689'";它返回 null。

WHERE        (CAST(id AS Varchar(20)) IN (@param))

我尝试脱掉第一个和最后一个',但这并没有什么区别。

!!!id是独一无二的PK!!!

有人有线索吗?


我找到的解决方案非常简单,这就像一个魅力,不需要 sps 或其他功能;

SQL:

SELECT whatever 
FROM whatever
WHERE (PATINDEX('%''' + CAST(id AS Varchar(20)) + '''%', @param) > 0)

C#:

String param = "'''1234'',''4567'''";
dataTable1 = tableAdapter1.getYourValues(param);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将参数传递给 SQL select 语句 IN 子句的行为很奇怪。 的相关文章

随机推荐