Hallo,
Ik heb een kolom in een tabel leegstand die eigenlijk een samenvoeging is van een huisnummer en (eventueel) een huisletter. Het nummer en de huisletter wil ik uit elkaar halen met de Oracle functie replace.
Voorbeeld
ADRES
--------------------------------------------------
18
11
6a
7
13
9a
SQL> update leegstand
2 set adres=replace(adres,'a',' __________a');
Resultaat:
ADRES
--------------------------------------------------
18
11
6_________a
7
13
9_________a
P.S. ik werk even met de underscore, omdat spaties blijkbaar niet worden weergegeven. Lees voor de __ spaties. Het resultaat is dus dat als er een letter voorkomt deze wordt vervangen door dezelfde letter voorafgegaan door een aantal spaties.
Hierna kan ik met select to_number(ltrim(substr(adres,1,5))) from leegstand het nummer en met select rtrim(substr(adres,5) de huisletter er uit halen en in aparte kolommen zetten.
Ik wil echter een pl-sql maken die dit voor alle letters doet. Huisletters varieren van a t/m z, dus voor al deze letters moet de bovenstaande replace worden gedaan.
Ik ben helemaal geen pl-sql man, maar ik heb het toch geprobeerd:
SQL> get pl_nummer
1 declare letter varchar(1);
2 begin
3 while letter in ('a','b','c') -- Even een testje van drie letters
4 loop
5 update leegstand
6 set adres=replace(adres,letter,'_________letter'); -- __ zijn spaties
7 commit;
8 end loop;
9* end;
10
Maar dit werkt niet.
Is er hier een ervaren PL-SQL-oracle man die het wel weet?
BVD.
Ik heb een kolom in een tabel leegstand die eigenlijk een samenvoeging is van een huisnummer en (eventueel) een huisletter. Het nummer en de huisletter wil ik uit elkaar halen met de Oracle functie replace.
Voorbeeld
ADRES
--------------------------------------------------
18
11
6a
7
13
9a
SQL> update leegstand
2 set adres=replace(adres,'a',' __________a');
Resultaat:
ADRES
--------------------------------------------------
18
11
6_________a
7
13
9_________a
P.S. ik werk even met de underscore, omdat spaties blijkbaar niet worden weergegeven. Lees voor de __ spaties. Het resultaat is dus dat als er een letter voorkomt deze wordt vervangen door dezelfde letter voorafgegaan door een aantal spaties.
Hierna kan ik met select to_number(ltrim(substr(adres,1,5))) from leegstand het nummer en met select rtrim(substr(adres,5) de huisletter er uit halen en in aparte kolommen zetten.
Ik wil echter een pl-sql maken die dit voor alle letters doet. Huisletters varieren van a t/m z, dus voor al deze letters moet de bovenstaande replace worden gedaan.
Ik ben helemaal geen pl-sql man, maar ik heb het toch geprobeerd:
SQL> get pl_nummer
1 declare letter varchar(1);
2 begin
3 while letter in ('a','b','c') -- Even een testje van drie letters
4 loop
5 update leegstand
6 set adres=replace(adres,letter,'_________letter'); -- __ zijn spaties
7 commit;
8 end loop;
9* end;
10
Maar dit werkt niet.
Is er hier een ervaren PL-SQL-oracle man die het wel weet?
BVD.