2

nvarchar(max)テーブルに substring を含むtype の列があり'><'ます。

を置き換えて にする必要があります'><'が、または'> ​ ​ ​ <'でない場合にのみ実行したいのです。'><\''><!'

置換機能を条件付きにする方法はありますか?

列には が数回出現'><'します。

ご協力いただきありがとうございます。

4

2 に答える 2

2

これを行うには、最初に保持したいシーケンスを列に自然に表示されないシーケンスに置き換えてから、置き換えたいシーケンスを置き換えてから、他のシーケンスを元に戻します。

DECLARE @x NVARCHAR(MAX) = N'<foo><blat><!--comment--><\blat><bar>';

SELECT @x = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@x, 
  '><!', '~~~~~!'), '></', '~~~~~\ '), -- hide ones you want to keep
  '><', '> <'),                        -- replace ones you want to replace
  '~~~~~!', '><!'), '~~~~~\ ', '><\'); -- un-hide the ones you want to keep

SELECT @x;
于 2012-06-05T21:05:55.867 に答える
1

CLR アセンブリをインストールできますか? 正規表現はもっと簡単かもしれません。または、3 つの置換関数呼び出しでそれを行うこともできます。

最初のものを で置き換え'><''> <'さらに 2 つ'> <(exclamation)''><(exclamation)'および '> <(backslash)'で置き換え'><(backslash)'ます。

ただし、これにより、最初の操作で変更されなかった既存のテキストが置き換えられる可能性があります。

于 2012-06-05T21:02:16.977 に答える