Замена строки T-SQL в обновлении

83

Мне нужно обновить значения столбца, заменив подстроку на существующие значения.

Пример:

Данные содержат abc@domain1и pqr@domain2т. Д.

Мне нужно обновить значения, @domain2заменив их на @domain1.

Сехар
источник
Сколько адресов электронной почты в каждом столбце? Находятся ли abc @ domain1 и pqr @ domain2 в одном столбце?
dana
да - они в одной колонке ..
Sekhar
1
Возможный дубликат поиска и замена части строки в базе данных
Джон Шнайдер

Ответы:

152

Синтаксис REPLACE :

ЗАМЕНИТЬ (строковое_выражение, строковый_шаблон, строковое_замещение)

Итак, нужный вам SQL должен быть:

UPDATE [DataTable] SET [ColumnValue] = REPLACE([ColumnValue], 'domain2', 'domain1')
Кофи Сарфо
источник
1
В моем случае мне нужно было заменить двойные кавычки одинарными. Я использовал следующий REPLACE ([ColumnValue], '"', '' ''). В конце четыре одинарных кавычки.
Дэниел Батлер
11

Если кому-то интересно, NTEXTиспользуйте следующий формат:

SELECT CAST(REPLACE(CAST([ColumnValue] AS NVARCHAR(MAX)),'find','replace') AS NTEXT) 
    FROM [DataTable]
Тавани
источник
4
Сам по себе этот оператор не выполняет обновление. вам необходимо сделать следующее: UPDATE [DataTable] SET SET [ColumnValue] = CAST (REPLACE (CAST ([ColumnValue] AS NVARCHAR (MAX)), 'domain2', 'domain1') AS NTEXT) FROM [DataTable]
Адам Привет,
6
update YourTable
    set YourColumn = replace(YourColumn, '@domain2', '@domain1')
    where charindex('@domain2', YourColumn) <> 0
Джо Стефанелли
источник
2
Обеспечивает ли включение предложения where, как в этом ответе, повышение эффективности по сравнению с принятым ответом?
Джон Шнайдер