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


83

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

Пример:

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

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


Сколько адресов электронной почты в каждом столбце? Находятся ли abc @ domain1 и pqr @ domain2 в одном столбце?
dana

да - они в одной колонке ..
Sekhar

Ответы:


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, как в этом ответе, повышение эффективности по сравнению с принятым ответом?
Джон Шнайдер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.