web-dev-qa-db-ja.com

SQL文字列内の複数の異なる文字を置き換える

文字列内の複数の文字を置き換える必要があります。結果に「&」またはコンマを含めることはできません。

私は現在持っています:

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

しかし、どのようにして複数の値を入れますか?

どうもありがとう!

16
coblenski

あなたはそれらをデイジーチェーンする必要があります:

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

1つのコメントで「数十の置換呼び出し」について言及しています...数十の単一文字を削除する場合は、翻訳と単一の置換を使用することもできます。

REPLACE(TRANSLATE(T2.[ShipToCode], '[];'',$@', '#######'), '#', '')
8
CLaFarge

「@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
6
Peter Schott