What you need is not 100% clear but I know you can use PatternSplitCM for this type of thing:
This:
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;
Returns:
Item
-------
2.8
2.8
2.8
You can add a TOP (1) to get the first one if you only need one.
This:
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;
Will Return:
strCondition Item
------------------------------------------------------- ---------
Sometext... blah blah... 20191108 blah blah... 20191108
"More stuff 22.44","ggooggoo" 22.44