Вы можете использовать комбинацию substring()
и replace()
, например:
select x, replace(substring(x, '(\d+(.|,)*\d*)'), ',', '.') convertedvalue
substring()
захватывает соответствующую часть строки, затем replace()
заменяет ,
на .
при необходимости.
Демонстрация по DB Fiddle
with t(x) as ( values ('H 24'), ('24.5'), ('24,5'), ('test5'), ('test 5.5'), ('50.752') )
select x, replace(substring(x, '(\d+(.|,)*\d*)'), ',', '.') convertedvalue
from t
x | convertedvalue
:------- | :-------------
H 24 | 24
24.5 | 24.5
24,5 | 24.5
test5 | 5
test 5.5 | 5.5
50.752 | 50.752