首先,我为这里糟糕的格式表示歉意。在一列中匹配子字符串
其次,我应该说,改变表架构不是一个选项。
所以我有一个表定义如下:
引脚 VARCHAR
OfferCode VARCHAR
引脚将包含数据,诸如:
ABC,
ABC123
OfferCode将包含如下数据:
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)
,它将返回表OutParam
,但我不太清楚如何将它应用于表列与字符串。 这甚至会值得追求吗?它似乎要贵得多,但我无法得到一个工作解决方案来与like
解决方案进行比较。
如果您有一列包含嵌入值中的多种或数量的数据,并且您希望基于组件部分进行查询,那么将数据存储在其组件部分中而不是组合数据更好? – hatchet
*“在这里使用'like'非常昂贵...”*这看起来像是过早的优化。你真的遇到速度问题吗? –