То, что вам нужно, не на 100% ясно, но я знаю, что вы можете использовать PatternSplitCM для этого типа вещей:
Это:
DECLARE @string VARCHAR(8000) = '"2.8, TEXT", "TEXT, 2.8", "TEXT 2.8"';
SELECT s.Item
FROM dbo.PatternSplitCM(@string,'[0-9.]') AS s
WHERE s.[Matched] = 1 AND TRY_CAST(s.item AS FLOAT) IS NOT NULL;
Возвращает:
Item
-------
2.8
2.8
2.8
Вы можете добавить ТОП (1), чтобы получить первый, если он вам нужен.
Это:
DECLARE @datatable TABLE (dID INT IDENTITY, strCondition VARCHAR(1000));
INSERT @datatable(strCondition)
VALUES ('Sometext... blah blah... 20191108 blah blah...'),('"More stuff 22.44","ggooggoo"');
SELECT d.strCondition, Item
FROM @datatable AS d
CROSS APPLY
(
SELECT TOP(1) s.Item
FROM dbo.PatternSplitCM(d.strCondition,'[0-9.]') AS s
WHERE s.[Matched] = 1 AND TRY_CAST(s.item AS FLOAT) IS NOT NULL
ORDER BY ItemNumber
) AS s;
Возвращается:
strCondition Item
------------------------------------------------------- ---------
Sometext... blah blah... 20191108 blah blah... 20191108
"More stuff 22.44","ggooggoo" 22.44