我一直在研究,但我找不到转换具有nvarchar
的存储过程参数的方法,如下所示:
'123456,123455,123454,123453,123452'
到
123456,123455,123454,123453,123452
表示需要数字的IN
子句
@Co_Ordenes varchar(max)
--code
WHERE T_OrdenAtencion.Co_OrdenAt in (@Co_Ordenes)
其中@co_ordenes
是nvarchar
,但IN
必须收到数字列表
答案 0 :(得分:1)
您基本上有三种选择:
split()
函数来分割字符串(网上有各种各样的实现)。like
。(在使用XML或递归CTE进行解析方面存在更多神秘的可能性。)
以下是使用like
;
where ',' + @Co_Ordenes + ',' like '%,' + cast(T_OrdenAtencion.Co_OrdenAt as varchar(255)) + ',%'
但是,这会阻止查询在Co_OrdenAt
列上使用索引。
您是否有可能以其他格式存储列表?例如,将列表放在临时表中会简化查询,生成的查询可以利用可用的索引吗?