首先,我为这里的糟糕格式道歉。
其次,我应该预先说更改表模式不是一种选择。
所以我有一个表定义如下:
Pin varchar
OfferCode varchar
Pin 将包含以下数据:
abc、
abc123
OfferCode 将包含以下数据:
123
123~124~125
我需要一个查询来检查 Pin/OfferCode 组合的计数,当我说 OfferCode 时,我的意思是由波浪号分隔的单个项目。
例如,如果有一行看起来像abc, 123
,另一行看起来像abc,123~124
,并且我搜索Pin=abc,OfferCode=123
我的魔杖的计数以获得计数 = 2。
显然我可以做一个类似的查询:
SELECT count(1) from MyTable (nolock) where OfferCode like '%' + @OfferCode + '%' and Pin = @Pin
在这里使用like
非常昂贵,我希望可能有更有效的方法。
我也在研究使用拆分字符串解决方案。我有一个SplitString(string,delim)
将返回 table的表值函数OutParam
,但我不太确定如何将它应用于表列和字符串。这甚至值得追求吗?看起来它会贵得多,但我无法获得一个可行的解决方案来与该like
解决方案进行比较。