0

我想通过传递字符串逗号分隔的 id 来获取记录。我在哪里的查询就像,

Charindex(cast(v.Status as varchar(8000)), @status)

假设我传递参数@status=15。现在它会显示 ID 为“1”、“5”和“15”的所有记录?我只需要 id = 15 的记录 希望您的建议谢谢

编辑:

我实际上使用这个链接来解决问题,

RBarry Young 回答

将充满逗号分隔值的 varchar 传递给 SQL Server IN 函数

4

1 回答 1

0

以这种方式使用 CSV 数据不是最理想的,但您可以尝试使用以下技巧LIKE

WHERE ',' + CAST(v.Status as varchar(8000)) + ',' LIKE '%,' + @status + ',%'

这个技巧之所以奏效,是因为现在,例如,我们正在,1,5,15,与 just进行比较,,15,这样就不会出现不匹配的情况。

我会继续说,这是非常糟糕的表/数据库设计。理想情况下,您应该只使用WHERE IN带有值列表的子句。或者,更好的是,将这些 CSV 值标准化并放入单独的表中。

于 2019-05-21T10:31:55.903 回答