Нет, я не боюсь "элегантного" решения.
Кроме того, введение функций, «родных» или CLR, в предложении WHERE не позволит SQL использовать индексы для разрешения предиката (ему придется сканировать всю таблицу, если не поможет какой-то другой предикат, по частям)
Несколько замечаний:
- здесь может быть приемлемо использование подчеркивания, поскольку целевые значения, похоже, следуют очень регулярному шаблону. Однако подчеркивание при использовании с LIKE само по себе является подстановочным знаком (соответствует одному и ровно одному символу). Если вы действительно хотите указать подчеркивание, «экранируйте» их, заключив их в квадратные скобки, то есть
'abc[_]def'
будет точно соответствовать 'abc_def'
, но не, например, 'abcXdef'
.
- выражение можно сделать более избирательным и более коротким с такими вещами, как
'testdb_20[0-9][0-9][0-1][0-9][0-3][0-9][_][0-9][0-9][0-9][0-9][0-9][0-9]'
т.е. предполагая, что даты будут в этом столетии и ограничиваясь днем больше 3х и т. д.