SQL Замените несколько разных символов в строке

Мне нужно заменить несколько символов в строке. Результат не может содержать никаких "&" или любые запятые.

В настоящее время у меня есть:

REPLACE(T2.[ShipToCode],'&','and')

Но как вы помещаете несколько значений в?

Большое спасибо!

Ответ 1

Вам просто нужно создать цепочку:

REPLACE(REPLACE(T2.[ShipToCode], '&', 'and'), ',', '')

Ответ 2

Мы использовали функцию, чтобы сделать что-то подобное, зацикливаемое по строке, хотя это было главным образом для удаления символов, которые не были в строке "@ValidCharacters". Это было полезно для удаления всего, что мы не хотели - обычно не буквенно-цифровых символов, хотя я думаю, что у нас также было место, цитата, одинарная кавычка и несколько других в этой строке. Это действительно использовалось для удаления непечатаемых символов, которые время от времени подкрадывались, поэтому не может быть идеальным для вашего случая, но может дать вам некоторые идеи.

CREATE FUNCTION [dbo].[ufn_RemoveInvalidCharacters]
 (@str VARCHAR(8000), @ValidCharacters VARCHAR(8000))
RETURNS VARCHAR(8000)
BEGIN
  WHILE PATINDEX('%[^' + @ValidCharacters + ']%',@str) > 0
   SET @str=REPLACE(@str, SUBSTRING(@str ,PATINDEX('%[^' + @ValidCharacters +
']%',@str), 1) ,'')
  RETURN @str
END

Ответ 3

Один комментарий упоминает "десятки вызовов замены"... если вы удаляете десятки отдельных символов, вы также можете использовать Перевод и одну Замену.

REPLACE(TRANSLATE(T2.[ShipToCode], '[];'',[email protected]', '#######'), '#', '')