Мне нужно найти максимальное значение из базы данных, которая удовлетворяет определенному соглашению о форматировании. В частности, я хотел бы найти самое высокое значение, которое выглядит какT-SQL IsNumeric() и Linq-to-SQL
EU999999 («9» быть любая цифра)
выбрать макс (Col) возвращает что-то вроде «EUZ ...» для экземпляр, который я хочу исключить. Следующий запрос выполняет трюк, но я не могу это сделать через Linq-to-SQL. Кажется, что нет перевода для функции isnumeric() в SQL Server.
select max(col) from table where col like 'EU%'
and 1=isnumeric(replace(col, 'EU', ''))
Запись функции базы данных, хранимую процедуру или что-нибудь еще в этом роде далеко вниз список моих предпочтительных решений, так как эта таблица занимает центральное место в мое приложение, и я не могу легко заменить объект таблицы с чем-то еще ,
Какое следующее лучшее решение?
Мне нравится ваше предложение, и я его принимаю, но мой префикс (и длина) не является постоянным, к сожалению, поэтому мне пришлось бы генерировать выражение динамически. Мне это не нравится, и я думаю о способах изменения схемы, чтобы я мог обойти это. – cdonner
Одним из преимуществ использования 'LIKE' без подстановочных знаков на передней панели является то, что это очень удобный индекс (может быть проведена проверка диапазона по индексу). – Ruben
Очень умная альтернатива IsNumeric на выражениях переменной длины. Найдите нечисловой символ в любом месте строки. Спасибо за совет! – BlueMonkMN