Hej! Först och främst skulle jag rekommendera att tänka över om en kolumn av datatypen text verkligen behövs. Ofta har den bara valts för att det verkade enkelt, eller för att den heter så i Access. Anledningen att man bör undvika dem är att de - precis som du märkt - är jobbiga att arbeta med. Om man lagrar data i dem så brukar man normalt bara göra det för att hämta ut hela datan till en applikation, arbeta med den och sen skriva över allt igen. Men med metoderna TEXTPTR() och UPDATETEXT() kan du åstadkomma det du vill i en text-kolumn. Hej Christoffer, såg du svarade på Sofias fråga, jag har samma problem i artiklarna där jag vill ersätta alla kod-taggarna till code som är ett ntext-fält. Som sagt, för att göra en sån engångssak hade jag nog skrivit en enkel applikation i .Net som streamade ut dem en och en, uppdaterade i .Net-miljö och sedan skrev över den gamla. Hej! Hej! Hej!REPLACE() i fält av datatypen Text
Jag ska importera data som innehåller text-fält med taggar för vilket typsnitt texten ska visas i.
Jag vill inte ha detta typsnitt i min databas så jag tänkte köra en REPLACE() på dessa fält.
Dock visar det sig att det inte går att göra på fält av type text, varchar går hur bra som helst.
Så här ser mitt script ut:
UPDATE PROJEKT
SET PROJ_NAMN = REPLACE(PROJ_NAMN, '\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fswiss Arial;}}\f0\fs20\b', '\rtf1\ansi\ansicpg1252\deff0\deflang1053{\fonttbl{\f0\fswiss\fprq2\fcharset0 MS Sans Serif;}}{\colortbl ;\red0\green0\blue0;}\viewkind4\uc1\pard\cf1\f0\fs16')
Jag får meddelandet att argument 1 i replace funktionen är av ogiltigt format.
Finns det någon annan funktion med motsvarande effekt jag kan använda?
Mvh,
SofiaSv: REPLACE() i fält av datatypen Text
Sv: REPLACE() i fält av datatypen Text
Tips på hur en update-syntax skulle se ut där?Sv:REPLACE() i fält av datatypen Text
I T-SQL blir lösningen antagligen att med hjälp av en textpointer jobba sig framåt 4000 tecken i taget, läsa in dessa i en nvarchar(4000) med readtext och sedan köra replace på den. Därefter skriver man tillbaks den modifierade texten med updatetext och flyttar fram offseten.Sv:REPLACE() i fält av datatypen Text
Jag skulle också vilja ha ett exempel på hur man använder TEXTPTR() och UPDATETEXT() om det är någon som sitter inne på ett sådant. Jag får det inte att fungera med hjälp av de beskrivningar jag hittat.
Texten som ska bytas ut är
{\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fswiss Arial;}}\f0\fs20\b
Och den ska bytas ut till
{\rtf1\ansi\ansicpg1252\deff0\deflang1053{\fonttbl{\f0\fswiss\fprq2\fcharset0 MS Sans Serif;}}{\colortbl ;\red0\green0\blue0;}\viewkind4\uc1\pard\cf1\f0\fs16
Tabellen heter Projekt och fältet Beskrivning
10000000000000 tack!
Mvh,
SofiaSv: REPLACE() i fält av datatypen Text
Håller med Christoffer ovan.
Eftersom det verkar vara en sån liten textmängd, vore det enklast att byta datatypen på fältet.
Då skulle du enkelt fixa detta med en UPDATE.
Är inte ett datatypsbyte möjligt?
//HåkanSv:REPLACE() i fält av datatypen Text
Tyvärr är det inte möjligt då databasen ska användas i en annan applikation som jag inte styr över och där ska fälten vara i text-format.
Mvh,
SOfia