Avatar billede muddi Praktikant
24. juni 2004 - 13:46 Der er 6 kommentarer og
1 løsning

Update text-felter med Replace

Jeg har en text-kolonne, hvor næsten alle dataene starter med "Carriage-return" efterfulgt af "line-feed" (CRLF).

Nu kunne jeg så godt tænke mig at komme af med alle disse tegn. Og på felter af typen Varchar virker det fint, men jeg kan ikke bruge koden på text-felter.
Her er koden der virkede på Varchar-felterne:

/* Fjern Carriage-return */
UPDATE Product
SET ProductText = REPLACE(ProductText, CHAR(13),'')
WHERE ASCII(LEFT(ProductText,1)) = 13

/* Fjern Line-feed */
UPDATE Product
SET ProductText = REPLACE(ProductText, CHAR(10),'')
WHERE ASCII(LEFT(ProductText,1)) = 10


Men når jeg prøver det samme trick på de andre felter  får jeg følgende fejl:

Server: Msg 8116, Level 16, State 1, Line 2
Argument data type text is invalid for argument 1 of replace function.
Server: Msg 8116, Level 16, State 1, Line 2
Argument data type text is invalid for argument 1 of left function.
Server: Msg 8116, Level 16, State 1, Line 7
Argument data type text is invalid for argument 1 of replace function.
Server: Msg 8116, Level 16, State 1, Line 7
Argument data type text is invalid for argument 1 of left function.


Det er kun de to første tegn der skal erstattes. Ikke dem der findes andre steder i feltet.
Avatar billede proaccess Nybegynder
24. juni 2004 - 14:52 #1
Kan du ikke bruge noget a'la (jeg er IKKE specialist i MS SQL)

UPDATE Product
SET ProductText = MID(ProductText, 2) & '  '
WHERE LEFT(ProductText, 1) = CHAR(13)
Avatar billede muddi Praktikant
24. juni 2004 - 14:55 #2
Nu kender jeg ikke lige MID()-funktionen. Den findes ikke i MySQL, hvad gør den?
LEFT kan åbenbart heller ikke bruges på et tekstfelt...
Avatar billede arne_v Ekspert
24. juni 2004 - 16:56 #3
MID er en Access/VBA funktion - og nej den findes ikke i MS SQL
Avatar billede arne_v Ekspert
24. juni 2004 - 16:59 #4
Hvis dine TEXT felter er kortere end 8000 tegn kan du bruge:

REPLACE (CAST(felt AS VARCHAR(8000)),'noget','nogetandet')
Avatar billede arne_v Ekspert
24. juni 2004 - 17:00 #5
Ellers er jeg bange for at du må flytte logikke op i din applikation.
Avatar billede muddi Praktikant
25. juni 2004 - 09:21 #6
Arne >> Det virkede ganske fint. Tak for hjælpen. Læg et svar, så lukker jeg her :)
Avatar billede arne_v Ekspert
25. juni 2004 - 10:28 #7
svar
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