Daten mit SQL ändern aber wie?

Hallo zusammen,
ich habe eine RS6000 mit AIX,ORACLE 7.3.4 und sqlplus 3.3.4 .
In der Datenbank sind 516 Datensätze falsch. Es handelt sich um Straßennamen die zusammengeschrieben wurden(z.B. "BonnerStr.).
Zum Anzeigen gebe ich folgendes ein:

select „name“ from „SpStreet“ where „name“ like ‚%rS%‘;

Es werden auch brav 516 Straßennamen aufgereiht aber wie kann ich ein Leerzeichen dazwischeneinfügen ?Die ORACLE-Hilfe gibt auch nichts her.
ich bin SQL-Neuling und bitte deshalb um Rat.
Danke im Voraus
Jörg

Also ich bin zu faul jetzt die genauen Syntaktika (ist doch richtig für Mehrzahl von Syntax oder?) nachzulesen, aber im Prinzip sollte es so funktionieren: Du suchst Dir mit INSTR das letzte Vorkommen von ‚S‘ im gewünschten String und machst Dir dann mit

SUBSTR(string,1,pos-1)||' '||SUBSTR(string,pos,\*biszumendehalt\*)

den kompletten String. Für ‚pos‘ mußt Du natürlich den INSTR-Aufruf einfügen.

Gruß,
TheBeast

P.S.: Viellecht gibt´s eine ‚Lukas Hildebrandt Gasse‘ und eine ‚Berliner Gasse‘ - die findet Dein SELECT nicht. Wie man die aber vernünftig herausfindet fällt mir im Moment auch nicht ein.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hei,

ich hab grade keine DB zur Hand, deshalb konnte ich das Statement nicht testen. Aber versuchs mal in der Art, vielleicht hilft Dir das weiter

update adressen
set strasse = substr(strasse,1,instr(‚rS‘))||’ '||substr(strasse,instr(‚rS‘)+1,length(strasse))
where strasse like ‚%rS%‘

Ciao, Uwe

Funktioniert leider für die ‚SaarbrückenerStraße‘ nicht. IMHO sollte man das ‚S‘ von hinten suchen. Siehe dazu meine Antwort.

Nix für ungut,
TheBeast

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

REPLACE (geht das mit 7.3)
Keine Ahnung ob das „damals“ schon ging :

create table test
( x varchar2(20));

insert into test values (‚mainzerstrasse‘);

select replace (x,‚STR‘, ‚*STR‘) from test;

Ausgabe: ‚mainzer strasse‘

Das bindest du (nach dem Test!!!) in eine update Klausel ein.

Gruss Janus

Ich hab das so interpretiert, daß der String „rS“ für Straßen die nach Orten oder Namen benannt sind, falsch sind. Aber wissen will ich es jetzt schon. Ich probiers morgen einfach mal aus.
Allerdings halte ich die REPLACE Lösung für die eleganteste
Ciao, Uwe

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Geht
Vorher:

STRASSE

SaarbrückenerStr
BonnerStr
BerlinerStr

Update:
update kam
set strasse = substr(strasse,1,instr(strasse,‚rS‘))||’ '||substr(strasse,instr(strasse,‚rS‘)+1,length(strasse))
where strasse like ‚%rS%‘

Nachher:
STRASSE

Saarbrückener Str
Bonner Str
Berliner Str

Ciao, Uwe

Danke nochmal
es funktioniert !!

jörg

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

update adressen
set strasse = substr(strasse,1,instr(‚rS‘))||’
'||substr(strasse,instr(‚rS‘)+1,length(strasse))
where strasse like ‚%rS%‘

Funktioniert leider für die ‚SaarbrückenerStraße‘ nicht.

Allerdings halte ich die REPLACE Lösung für die eleganteste

Hi zusammen!

Also jetzt genier ich mich aber tierisch! Ich hab´ doch glatt bei Deiner Version im INSTR nur das ‚S‘ gesehen und nicht, daß Du eh nach ‚rS‘ suchst (liegt wahrscheinlich daran, daß ich selbst zuerst an diese Lösung gedacht hatte). So geht´s natürlich. Jaja, lesen sollte man halt schon können *sichinirgendeineeckeverkriech*.

Und daß natürlich die REPLACE - Lösung die eleganteste ist, daran kann gar kein Zweifel bestehen, aber warum einfach, wenn´s auch kompliziert geht *g*.

Gruß,
Martin