Thay thế chuỗi T-SQL trong Cập nhật


83

Tôi cần cập nhật các giá trị của một cột, với việc thay thế chuỗi con được thực hiện trên các giá trị hiện có.

Thí dụ:

Dữ liệu chứa abc@domain1, pqr@domain2v.v.

Tôi cần cập nhật các giá trị @domain2được thay thế bằng @domain1.


Mỗi cột có bao nhiêu địa chỉ email? Abc @ domain1 và pqr @ domain2 có trong cùng một cột không?
dana

vâng - họ ở cùng một cột ..
Sekhar

Câu trả lời:


151

Cú pháp cho REPLACE :

REPLACE (string_expression, string_pattern, string_replacement)

Vì vậy, SQL bạn cần phải là:

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

1
Trong trường hợp của tôi, tôi cần thay thế báo giá kép bằng báo giá đơn. Tôi đã sử dụng sau REPLACE ([ColumnValue], '"', '' '') Sự kết thúc là bốn dấu nháy đơn..
Daniel Butler

11

Nếu ai đó quan tâm, NTEXThãy sử dụng định dạng sau:

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

4
Bản thân câu lệnh đó không thực thi cập nhật. bạn cần thực hiện như sau: CẬP NHẬT [DataTable] SET SET [ColumnValue] = CAST (REPLACE (CAST ([ColumnValue] AS NVARCHAR (MAX)), 'domain2', 'domain1') AS NTEXT) TỪ [DataTable]
Adam Hey

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

2
Việc bao gồm mệnh đề where như trong câu trả lời này có mang lại hiệu quả gì so với câu trả lời được chấp nhận không?
Jon Schneider
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.