结合fn_split函数,我将根据逗号分隔值返回表中的结果列表.
存储过程T-SQL如下:
SELECT ProductCode, ProductDesc, ImageAsset, PriceEuros, PriceGBP, PriceDollars, replace([FileName],' ','\_') as [filename], ID as FileID, weight from Products LEFT OUTER JOIN Assets on Assets.ID = Products.ImageAsset where ProductCode COLLATE DATABASE_DEFAULT IN (select [value] from fn\_split(@txt,',')) and showOnWeb = 1
我传入以下的@txt参数(作为示例):
ABC001,ABC009,ABC098,ABC877,ABC723
这一切都运行正常,但结果不会以任何特定的顺序返回 - 我需要在'SAME ORDER'中返回的产品作为输入参数.
不幸的是,这是一个带有内置架构的实时网站,所以我无法改变任何内容(但我希望我能) - 否则我会让它变得更加明智.
如果在@txt参数上传递的所有引用都是唯一的,则可以使用CharIndex在参数中找到它们的位置,例如
order by charindex(ProductCode, @txt)