Это решение хорошее и универсальное, хотя звучит так, что ваша строка всегда будет иметь =
, поэтому вы можете написать что-то более конкретное, если хотите.
Это решение находит начальное местоположениепервая числовая строка:
PATINDEX('%[0-9]%', string)
И находит расположение первого нечислового символа после этой числовой строки (добавляя 't' к концу строки, если она заканчивается числом, котороев противном случае выдает ошибку):
PATINDEX('%[0-9][^0-9]%', string + 't')
И, наконец, вычитает начальную позицию числа из конечной позиции, чтобы найти длину строки чисел, и вытягивает эту длину с подстрокой:
SELECT SUBSTRING(string, PATINDEX('%[0-9]%', string), PATINDEX('%[0-9][^0-9]%', string + 't') - PATINDEX('%[0-9]%',
string) + 1) AS Number
Здесь "строка" - это заполнитель, который должен быть заменен именем вашего столбца.Кроме того, самый простой способ проверить подобные вещи в tsql - это использовать переменную:
DECLARE @string varchar(100) = 'foo bar la la la 83823737237'
SELECT SUBSTRING(@string, PATINDEX('%[0-9]%', @string), PATINDEX('%[0-9][^0-9]%', @string + 't') - PATINDEX('%[0-9]%',
@string) + 1) AS Number
Вывод:
83823737237