1

Temat: Wyciągnięcie znaków liczbowych ze środka stringa

Witam

Mam taką  zagwostkę, a mianowicie jak wyciągnąć znaki liczbowe ze środka stringa.

Mam np. string ABa%56kLSA.

Udało mi się to zrobić mniej więcej tak jak poniżej, jednak bawienie się i zamienianie wszystkich możliwych znaków i wycinanie ich później nie ma sensu.

SELECT
rtrim(ltrim(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(upper(wiek), 'A', 'A'), 'B', 'A'), 'C','A'),'D','A'),'E','A'),'F','A'),'G','A'),'H','A'),'I','A'),'J','A'),
'K','A'),'L','A'),'M','A'),'O','A'),'P','A'),'R','A'),'S','A'),'T','A'),'U','A'),'W','A'),'X','A'),'Y','A'),'Z','A'),'A'),'A')

FROM pracownik WHERE id=5;

Ktoś wie bądź ma pomysł jak to zrealizować w mniej zagmatwany sposób?

2

Odp: Wyciągnięcie znaków liczbowych ze środka stringa

może tak
select
translate(upper(wiek),'AĄBCĆDEĘFGHIJKLŁMNOÓPQRSTUWZŹŻ%.,','') as met_1
,regexp_replace(wiek,'\D+','','g')  as met_2_1
,trim(regexp_replace(wiek,'\D+',',','g'),',') as met_2_2
FROM (select 'ABa%56kLSA87.'::varchar as wiek) d