对不同长度的字符串进行通配符搜索?

时间:2012-11-15 19:55:32

标签: sql-server-2008 tsql

我有一个字符串,可以有3种不同的长度(10,11和12)。如果输入完整字符串,我不想进行外卡搜索,例如,如果输入abc1234567并且这是最大长度,我不想在abc1234567%上搜索,但是如果它不是最大长度,我会想要通配它。

这会影响性能,特别是如果你加入字符串?

1 个答案:

答案 0 :(得分:1)

你可以这样做:

 WHERE AnotherField LIKE CASE WHEN LEN(MyField) <> 10 --or some other number
                    THEN MyField + '%'
                    ELSE MyField END

但性能明智LIKE MyField +'%'应该是每行执行的较小操作。如果一个字符串是最大长度,那么它可以返回没有误报,因为没有超过它的字符。