Avatar billede damon Nybegynder
29. september 2006 - 14:45 Der er 6 kommentarer

replace i oracle

Jeg har et feldt i en oracle tabel som indeholder en sti
eks:
c:/myfile/newfile/file1.txt
c:/myfile/newfile/file2.txt
c:/myfile/newfile/file3.txt

Findes der en komando som kan replace alle 3 rækker således at du kun skifter stien men ikke filen.
eks:
d:/newDir/newfile/file1.txt
d:/newDir/newfile/file2.txt
d:/newDir/newfile/file3.txt


Eller rettere kun en del af en streng og ikke hele strengen, en slags find and replace som commando?
Avatar billede uucico Nybegynder
29. september 2006 - 15:34 #1
Kan du bruge
SELECT
  REGEXP_REPLACE(sti_kolonne, 'fra', 'til')
FROM
  sti_tabel;
Avatar billede Slettet bruger
29. september 2006 - 15:51 #2
select DECODE(substr(col,1,1),'C','D',(substr(col,1,1))) from tabel;
Avatar billede Slettet bruger
29. september 2006 - 15:58 #3
Undskyld :(

Update tabel
set col='D:/newDir/newfile/'||(select substr(col,19,9) from tabel where col like 'c:/%';
Avatar billede kjulius Novice
01. oktober 2006 - 14:17 #4
Oracle har en REPLACE funktion:

UPDATE table1 SET sti = REPLACE(sti, 'c:/myfile', 'd:/newDir')

http://www.mid.main.vsu.ru/docs/oracle/server.816/a76989/functi76.htm#78610
Avatar billede damon Nybegynder
02. oktober 2006 - 10:03 #5
Den replace funktion virker fint bortset fra at jeg i nogle af mine rækker har NULL værdier, og de bliver osse replaced med den nye sti, hvilket de ikke skal :(
Avatar billede kjulius Novice
02. oktober 2006 - 22:16 #6
Hmm.. Det forstår jeg ikke. Men kan du så ikke bare, som et quick fix, lade være med at opdatere disse rækker?:

UPDATE table1 SET sti = REPLACE(sti, 'c:/myfile', 'd:/newDir')
WHERE sti IS NOT NULL
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester