Вот скалярная функция, которая возьмет строку в качестве ввода и вернет наибольшее целое число, которое она найдет (максимум до трех цифр, но из вашего вопроса я предположил, что вы имеете дело с процентами. Если вам нужно больше цифр, повторите инструкции IF до бесконечности).
Вставьте это в SSMS и запустите его, чтобы создать функцию. Для того, чтобы назвать его, сделать что-то вроде:
SELECT dbo.GetLargestNumberFromString(MyStringField) as [Largest Number in String]
FROM MyMessedUpData
Функция:
CREATE FUNCTION GetLargestNumberFromString
(
@s varchar(max)
)
RETURNS int
AS
BEGIN
DECLARE @LargestNumber int, @i int
SET @i = 1
SET @LargestNumber = 0
WHILE @i <= LEN(@s)
BEGIN
IF SUBSTRING(@s, @i, 3) like '[0-9][0-9][0-9]'
BEGIN
IF CAST(SUBSTRING(@s, @i,3) as int) > @LargestNumber OR @LargestNumber IS NULL
SET @LargestNumber = CAST(SUBSTRING(@s, @i,3) as int);
END
IF SUBSTRING(@s, @i, 2) like '[0-9][0-9]'
BEGIN
IF CAST(SUBSTRING(@s, @i,2) as int) > @LargestNumber OR @LargestNumber IS NULL
SET @LargestNumber = CAST(SUBSTRING(@s, @i,2) as int);
END
IF SUBSTRING(@s, @i, 1) like '[0-9]' OR @LargestNumber IS NULL
BEGIN
IF CAST(SUBSTRING(@s, @i,1) as int) > @LargestNumber
SET @LargestNumber = CAST(SUBSTRING(@s, @i,1) as int);
END
SET @i = @i + 1
CONTINUE
END
RETURN @LargestNumber
END
Не можете ли вы сделать это в Excel до импорта? –
Недостаточно информации для отправки ответа. –