2015-12-14 2 views

ответ

2

Один метод может использовать between. Что-то вроде этого:

where column >= left(val, 20) and column < left(val, 20) + ??? 

Я не уверен, что именно ??? должно быть.

Возможно, лучший способ заключается в использовании вычисляемого столбца, но это предполагает, что вы всегда искали 20 байт:

alter table t add column_20 as (cast(column as varbinary(20)); 

create index idx_t_column20 on t(column_20); 

Тогда равенство следует использовать индекс:

where column_20 = @value 
+0

Может 'столбцов <= left (val, 19) + char (65536-1) '? Не уверен, что это покрывает все краевые случаи. – usr

Смежные вопросы