Zastąp ciąg T-SQL w aktualizacji


83

Muszę zaktualizować wartości kolumny, zastępując podciąg na istniejących wartościach.

Przykład:

Zawiera dane abc@domain1, pqr@domain2itd.

Muszę zaktualizować wartości takie, które @domain2są zastępowane @domain1.


Ile adresów e-mail ma każda kolumna? Czy abc @ domain1 i pqr @ domain2 znajdują się w tej samej kolumnie?
dana

tak - są w tej samej kolumnie ..
Sekhar

Odpowiedzi:


152

Składnia REPLACE :

REPLACE (wyrażenie_ciągowe, wzorzec_ciągów, zastąpienie_łańcuchów)

Aby SQL, którego potrzebujesz, był:

UPDATE [DataTable] SET [ColumnValue] = REPLACE([ColumnValue], 'domain2', 'domain1')

1
W moim przypadku musiałem zamienić podwójny cudzysłów na pojedynczy cudzysłów. Użyłem następującej REPLACE ([ColumnValue], '"', '' ''). Koniec to cztery pojedyncze cudzysłowy.
Daniel Butler

11

Jeśli kogoś to obchodzi NTEXT, użyj następującego formatu:

SELECT CAST(REPLACE(CAST([ColumnValue] AS NVARCHAR(MAX)),'find','replace') AS NTEXT) 
    FROM [DataTable]

4
To stwierdzenie samo w sobie nie powoduje wykonania aktualizacji. musisz wykonać następujące czynności: UPDATE [DataTable] SET SET [ColumnValue] = CAST (REPLACE (CAST ([ColumnValue] AS NVARCHAR (MAX)), „domain2”, „domain1”) AS NTEXT) FROM [DataTable]
Adam Hej,

6
update YourTable
    set YourColumn = replace(YourColumn, '@domain2', '@domain1')
    where charindex('@domain2', YourColumn) <> 0

2
Czy uwzględnienie klauzuli gdzie, jak w tej odpowiedzi, zapewnia jakikolwiek wzrost wydajności w stosunku do zaakceptowanej odpowiedzi?
Jon Schneider
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.