我有一个看起来像
的值hh12,mm13,kk14,ll55.
我目前将其拆分并使用where value in子句来查找字符串中包含这些id的记录。我现在必须允许像这样的字符串输入。
hh,mm,kk,ll
除了上面的字符串在同一个参数中。这些是上面相同代码的两个字符前缀。如果用户输入两个字符数字,我需要能够获取'hh%'
或'mm%'
等值的所有记录。我不确定这是否可能从类似的角度来看。有什么想法吗?
我目前在我的where子句中使用它
其中id为(IN(SELECT * FROM functions.dbo.Split_DelimitedString_fn(@ids,',')
但是当客户端输入2个字符代码时,如何将同一个字符串的相同逻辑转换为多个喜欢?
答案 0 :(得分:0)
嗯,这不是SARGable。但你可以做到
WHERE LEFT(id,2)IN(SELECT * FROM Functions.dbo.Split_DelimitedString_fn(@ids,','))
虽然每次执行都会导致表扫描,但只有在知道你的表格相当小的时候才会这样做。
除此之外,您可以使用动态sql创建多个带有喜欢的OR子句。
答案 1 :(得分:0)
如果我理解正确,您应该考虑使用regular expressions? ^hh[0-9]{2}$
将是您需要使用的模式之一。