Avatar billede dimsushi Nybegynder
03. marts 2006 - 02:11 Der er 4 kommentarer og
2 løsninger

Forespørgsel i mySQL

Jeg har en tabel som indeholder en kolonne der hedder URL. Mange af rækkerne i denne kolonne indeholder noget ala files/filnavn.extension. Kan jeg lave et mySQL script som fjerner files/ og laver dem alle sammen om til filnavn.extension? :)
Avatar billede kalp Novice
03. marts 2006 - 02:19 #1
Du kalder replace

REPLACE(dinTekst,'files/','')

eller ret i din db så files/ fjernes

eller lav din sql som følgende.

SELECT REPLACE(dinTekst,'files/','') from dinTabel;


er der problemer så erstat ' tegnene med "
Avatar billede stingbat Nybegynder
03. marts 2006 - 02:22 #2
Det kan gøres så enkelt som:
SELECT ..., SUBSTRING_INDEX(URL,'/',-1) AS Filename, ... FROM ....


Håber at du kan bruge det :)
Avatar billede dimsushi Nybegynder
03. marts 2006 - 11:00 #3
Hej igen

Har siddet og kigget lidt på jeres svar, men jeg må desværre sige at jeg ikke rigtigt forstår dem. Tabellen vi snakker om indeholder ca 600 rækker. Det er dog ikke alle rækker i kolonnen URL der indeholder files/filnavn.extension da noget også er en hel URL startene med http. Meningen er ikke at jeg skal hente noget data ud fra databasen, men at jeg med en mySQL forespørgsel skal kunne ændre indholdet af URL kolonnen i de rækker hvor URL starter med files/ så dette ikke kommer med. Jeg håber meget det giver mening og håber I kan give en god ide til forespørgslen, hvis det e muligt. :)

@ kalp
http://dev.mysql.com/doc/refman/5.0/en/replace.html
For mig ser det ud som om der er noget forkert med replace. De skriver 'REPLACE works exactly like INSERT, except that if an old row in the table has the same value as a new row for a PRIMARY KEY or a UNIQUE index, the old row is deleted before the new row is inserted.' Er det mig der har misforstået noget?
Avatar billede kalp Novice
03. marts 2006 - 12:05 #4
ved select slettes intet af din databases indhold.
Avatar billede stingbat Nybegynder
03. marts 2006 - 12:53 #5
Den REPLACE som benyttes af kalp, er den REPLACE fra String Functions:
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

Hvis du skal have fjernet files/ eller lign. HELT fra databasen (altså ændre/opdatere dine records), kan du benytte følgende:
UPDATE tabelnavn SET URL = SUBSTRING_INDEX(URL,'/',-1)
- eller -
UPDATE tabelnavn SET URL = REPLACE(dinTekst,'files/','')

Dog kan du sagtens bibeholde det i databasen, hvis det er, og blot fjerne files/ el. andre paths, ved SELECT (som både kalp og mit eksempel fra i nat bygger på).
Avatar billede dimsushi Nybegynder
03. marts 2006 - 13:50 #6
Jeg takker for hjælpen fra jer begge to. Håber det er ok I har delt mine point. :)
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