我的数据库表中有一个类似“1,3,5,6”的 nvarchar 值
但我想在 where 条件下使用它,例如 where event_id IN (1,3,5,6)
我如何实现这一点,如何转换它并在查询的 IN 中使用
答案1
这必须通过动态 SQL 来完成。类似这样。
DECLARE @val nvarchar(20), @sql nvarchar(100)
set @val = (select SomeColumn from SomeTable)
SET @sql = 'SELECT * FROM AnotherTable WHERE Column3 IN (' + @val + ')'
exec (@sql)
答案2
我可以找出并修复它,但不确定原因,但问题是
如果我写
设置@sql =
但当我改变时它的工作
EXEC ('从左外连接 b 中选择前 20 个 a.aa、a.bb、a.cc、a.dd、c.pp、a.ee,a.ff=b.ff,左外连接 c,a.gg=c.gg,其中 len(a.aa) > 0 并且 b.aa 在 ('+@val +') 和 a.xx=1')
谢谢