Заміна рядка T-SQL в оновлення


83

Мені потрібно оновити значення стовпця, замінивши підрядок на існуючі значення.

Приклад:

Дані містять abc@domain1, і pqr@domain2т.д.

Мені потрібно оновити значення, @domain2замінені на @domain1.


Скільки електронних адрес має кожен стовпець? Чи є abc @ domain1 та pqr @ domain2 в одному стовпці?
dana

так - вони в одній колонці ..
Сехар

Відповіді:


151

Синтаксис для REPLACE :

ЗАМІНИТИ (вираз_ рядка, шаблон_ рядка, заміна рядка)

Таким чином, SQL, який вам потрібен, повинен бути:

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

1
У моєму випадку мені потрібно було замінити подвійну лапку на одну лапку. Я використав наступну ЗАМІНИ ([ColumnValue], '"', '' ''). Кінець - чотири одинарні лапки.
Даніел Батлер

11

Якщо когось це цікавить NTEXT, використовуйте такий формат:

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

4
Ця заява сама по собі не виконує оновлення. вам потрібно зробити наступне: ОНОВИТИ [DataTable] SET SET [ColumnValue] = CAST (REPLACE (CAST ([ColumnValue] AS NVARCHAR (MAX)), 'domain2', 'domain1') AS NTEXT) ІЗ [DataTable]
Адам Привіт

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

2
Чи включає речення where, як у цій відповіді, будь-який приріст ефективності порівняно з прийнятою відповіддю?
Джон Шнайдер,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.