Мне нужно сравнить конец строки со списком возможных концов хранимой процедуры.Это будет называться много, и будет около 10-15 финалов кандидатов.На этом этапе решение с использованием только кода предпочтительнее, чем создание таблиц, предназначенных для этого.Что-то вроде:
IF (ENDSWITH(@var, 'foo') OR
ENDSWITH(@var, 'bar') OR
ENDSWITH(@var, 'badger') OR
ENDSWITH(@var, 'snake'))
(
)
Я ищу лучший способ с точки зрения скорости, а также ремонтопригодности.Кандидаты, о которых я знаю, это
RIGHT, мой любимый на данный момент, но это означает, что я должен жестко задавать длину строки, поэтому может быть подвержен ошибкам.Это также означает многократное вырезание исходной строки.
IF ((LEN(@var) >= 3 AND RIGHT(@var, 3) = 'foo')) OR ...
НРАВИТСЯ, возможно, медленнее, но немного чище
IF (@var LIKE '%foo') OR ...
CHARINDEXскорее всего медленнее, поскольку он ищет всю строку
SUBSTRING, наиболее вероятно эквивалентно RIGHT и гораздо более уродливо
SQLCLR для создания моей собственнойКОНЕЦ, это может быть довольно быстро
Возможно, есть лучшие способы, о которых я не знаю.Как вы думаете?