Muszę zaktualizować / zamienić dane w datatable.column. Tabela ma pole o nazwie Content
. Używam REPLACE
funkcji. Ponieważ typ danych kolumny to NTEXT
, SQL Server nie pozwala mi używać tej REPLACE
funkcji.
Nie mogę zmienić typu danych, ponieważ ta baza danych jest tabelą oprogramowania innej firmy. Zmiana typu danych spowoduje awarię aplikacji.
UPDATE [CMS_DB_test].[dbo].[cms_HtmlText]
SET Content = REPLACE(Content,'ABC','DEF')
WHERE Content LIKE '%ABC%'
Otrzymuję ten błąd:
Msg 8116, poziom 16, stan 1, wiersz 1 Typ danych argumentu ntext jest nieprawidłowy dla argumentu 1 funkcji zamiany.
- Czy mogę to naprawić za pomocą T-SQL? Czy ktoś ma przykład jak czytać i zapętlać?
- Ponieważ jest to konwersja jednorazowa, może mogę zmienić typ na inny, ale obawiam się, że zepsuję dane.
Jest tam pole klucza podstawowego: nazwa: ID - liczba całkowita - to tożsamość ... Więc też muszę o tym pomyśleć. Może tymczasowo ustawić Tożsamość na N.
Proszę o poradę, jak uzyskać funkcję REPLACE?
Około. 3000 wyciągów wymaga aktualizacji o nowe rozwiązanie.
sql
sql-server
tsql
ethem
źródło
źródło
Odpowiedzi:
JEŚLI dane nie przekroczą 4000 znaków ORAZ korzystasz z programu SQL Server 2000 lub poziomu zgodności 8 lub programu SQL Server 2000:
W przypadku programu SQL Server 2005+:
źródło
NText
naprawdę konieczna? Myślę, że przypisanieNVarchar(MAX)
doNText
automatycznie spowoduje wysłanie.Zakładając, że SQL Server 2000, następujące pytanie StackOverflow powinno rozwiązać twój problem.
Jeśli używasz SQL Server 2005/2008, możesz użyć następującego kodu (zaczerpniętego stąd ):
źródło