Я хочу знать гибкий способ извлечения строки между двумя '-'. Проблема в том, что «-» может существовать или не существовать в исходной строке. У меня есть следующий код, который отлично работает, когда '-' существует дважды в исходной строке, отмечая начало и конец извлеченной строки. Но он выдает ошибку «Недопустимый параметр длины, переданный в функцию LEFT или SUBSTRING», когда существует только один «-» или его нет вообще, или если строка пуста. Может кто-нибудь, пожалуйста, помогите? Спасибо
declare @string varchar(100) = 'BLAH90-ExtractThis-WOW'
SELECT SUBSTRING(@string,CHARINDEX('-',@string)+1, CHARINDEX('-',@string,CHARINDEX('-',@string)+1) -CHARINDEX('-',@string)-1) as My_String
Требуемый вывод: ExtractThis
Если есть только один da sh, например, 'BLAH90-ExtractThisWOW'
, то выход должен быть всем после первого da sh, т. Е. ExtractThisWOW
. Если тире нет, вместо строки будет пробел, например, 'BLAH90 ExtractThisWOW'
, и он должен возвращать все после пробела, т.е. ExtractThisWOW
.