Мне нужно определить, имеет ли данная строка формат 'abcd efg -4', т.е. '% -number'. Мне нужно выделить «4» и увеличить его до «5».
Остальная часть строки может содержать даты и время, например:
abcd efg - ghis asdjh - 07-07-2011 05-30-34 AM
эта строка, например, НЕ соответствует шаблону, т.е. - [число]. Для этой строки вывод из моего SQL должен быть
abcd efg - ghis asdjh - 07-07-2011 05-30-34 AM -1
Если приведено выше, я должен получить:
abcd efg - ghis asdjh - 07-07-2011 05-30-34 AM -2
Число может быть любым числом цифр, т. Е. Строка может быть 'abcd efg -123', и мой T-SQL будет возвращать 'abcd efg -124'
Этот код T-SQL будет встроен в хранимую процедуру. Я знаю, что мог бы реализовать хранимые proc / function .Net и использовать Regex для этого, однако существуют различные проблемы с доступом, которые мне нужно решить, чтобы включить CLR на SQL Server.
Я пробовал следующие шаблоны:
- '% [] [-]% [0-9]', это работает в большинстве случаев, но где-то помещается в дополнительный пробел и происходит сбой
- '% [] [-]% [^ az] [^ AZ]% [0-9]', это позволяет пропустить '-4' (как показано в приведенном выше примере), но работает в нескольких случаях, такие
- '% [] [-] [^ a-z] [^ A-Z]% [0-9]', в одних это опять работает, в других - нет ...
Этот шаблон '- [число]' всегда будет в конце строки, если его нет, код добавит его, как показано в примерах выше.
Я бы хотел шаблон, который работает для ВСЕХ случаев ...