Avatar billede mr.handstand Novice
19. juni 2001 - 13:14 Der er 6 kommentarer og
1 løsning

erstatte del af string ved gennemløb af recordset

Jeg har brug for hjælp til at erstatte alle forekomster af en bestemt \"del-streng\" med en anden.
Hvis jeg har et felt kaldet \"TestField\" (typen nvarchar (80)) i en tabel kaldet TestTable med 1000 records, er mit mål eksempelvis at erstatte alle forekomster af \"over\" med \"under\".
Overbo --> Underbo
Gå over broen --> Gå under broen
osv.
Meget gerne Case-sensitivt...

Jeg synes ikke REPLACE-metoden\'s hjælp i books-online hjælper en newbie for godt:
---
This example replaces the string cde in abcdefghi with xxx.

SELECT REPLACE(\'abcdefghicde\',\'cde\',\'xxx\')

GO
---

Gerne til eksekvering i Query Analyzer.
Avatar billede slash Nybegynder
19. juni 2001 - 13:19 #1
for at traversere din testtable igennem kunne du bruge en cursor sammen med dette kode:

declare @tekst varchar(200)
declare @searchstr varchar(200)
declare @replacesent varchar(50)
set @searchstr = \'klyt\'
set @tekst = \'klyternogetnyt\'
set @replacesent = \'over\'

select replace(@tekst, @searchstr, @replacesent)
Avatar billede seider Nybegynder
19. juni 2001 - 13:20 #2
og her er et forståeligt eksempel

select replace (\'komplet streng\',\'gå over broen\',\'gå under broen i stedet for over\')

hvis jeg da ellers husker rigtigt *S*

www.fotx.net/seider
Avatar billede mr.handstand Novice
19. juni 2001 - 14:19 #3
slash (eller en anden) kunne du vise hvordan du vil \'traversere\' gennem recordset\'et med cursoren - jeg er for meget newbie til at det er en walk-in-the-park for mig :-)

(Har lige brugt 30 min på at få en cursor til at virke for mig - men får nogle små sjove \'cursor allready exists / incorrect syntax\' - beskeder...

seider - det var ikke fordi jeg ikke kunne forstå at string1 var den undersøgte string, string2 er det delelement man skal finde i String\'en, og string3 er det man indsætter istedet, men fordi jeg ikke kan finde ud af at erstattet string1 med en variabel - og sidenhen update det recordset hvor variablen er taget ud fra... - men det kunne jeg selvfølgelig godt have udtrykt bedre.
Avatar billede slash Nybegynder
19. juni 2001 - 14:22 #4
du kan finde gode eksempler på cursors i SQL-server books online (kan deslige downolades fra microsoft.com hvadeneten du bruger 7.0/2000)

Du skal huske at deallokere din cursor når du er færdig med den.
Avatar billede jakobandersen Nybegynder
19. juni 2001 - 14:38 #5
SELECT Replace(Felt, \'Fyord\',\'Censur\'),felt2,felt3 FROM tabel

Men pas på med sammensatte ord f.eks. \"jeg hedder spike\" kunne i et dårlig bande ords filter blive til \"jeg hedder sCENSURe\"
Avatar billede sunedh Nybegynder
19. juni 2001 - 20:27 #6
Hvorfor dog bruge en cursor? Man bør være meget varsom med at bruge cursorer og oftes er det heller ikke nødvendigt.

Hvis du skal opdatere dataene fysisk i tabellen (og ikke kun omforme dem, når du trækker dem ud) kan du bare bruge en UPDATE:

UPDATE myTable SET TestField = REPLACE(TestField, \'over\', \'under\')

for at ændre \"over\" til \"under\".

Hvis det kun er når du trække data ud, at du vil omforme er moonduck\'s eksempel helt fint.

-Sunedh
Avatar billede mr.handstand Novice
19. juni 2001 - 22:48 #7
Det var lige sunedh\'s svar jeg var på jagt efter - pointene er helt klart dine.
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