我试图通过传递一个键列表作为keycodelist的参数来执行sql查询,但它不起作用。即使数据库中存在该值,我也得到了KeyNotFoundException。
我该如何解决这个问题?我是否需要转义调用getKeyValue的参数?
我这样调用了这个函数。
(->) r
答案 0 :(得分:0)
一个原因,为什么我不喜欢"哦,我们之前有过这个,它是重复的"事情是,链接的文章可能很老,接受和/或得分最高的答案可能不是今天最好的...这种方法也在这些页面上列出,但得分非常低。在我看来,它是处理这个问题的最快和最优雅的方法(至少像我一样,尽可能避免动态SQL ......)
DECLARE @tbl TABLE(ID INT, SomeValue VARCHAR(10));
INSERT INTO @tbl VALUES
(1,'value 1')
,(2,'value 2')
,(3,'value 3')
,(4,'value 4')
,(5,'value 5');
DECLARE @ListOfIDs VARCHAR(20)='1,3,5';
WITH ListOfIDs AS
(
SELECT CAST('<root><r>'+REPLACE(@ListOfIDs,',','</r><r>')+'</r></root>' AS XML) AS IDsAsXML
)
,ListOfIDsResolved AS
(
SELECT x.y.value('.','int') AS ID
FROM ListOfIDs
CROSS APPLY ListOfIDs.IDsAsXML.nodes('/root/r') x(y)
)
SELECT * FROM @tbl AS tbl
INNER JOIN ListOfIDsResolved ON tbl.ID=ListOfIDsResolved.ID