ユーザーのSQLServer 2005 で複数のインスタンスを交換することは、私はとこだわっている文字列の例です。 ;} {\ F1 \ fnil \ fcharset0のArial;}} \ viewkind4 \ UC1 \ PARD \ F0 \ fs54 1000年\ F1 \ FS20 \パー}select文ここ
私は 'のTimes New Roman' で任意のフォント名を置き換えたい
Select Replace(textlong1,
CASE When CharIndex(';',textlong1)> 10 Then
SubString(textlong1
, Charindex('fcharset',textlong1)+10
, CharIndex(';',textlong1) - Charindex('fcharset',textlong1)-10)
Else '' End
, 'Times New Roman') From exampletable
私はケースのstatemeを使用しています:
私は(textlong1がフィールドである)との最初のものを得ることができますサブストリングがエラーにならないようにします。
私はループしても 'fcharset'を置き換えないので、2番目のインスタンスを見つけることができません(常に最初のものに固執します)。
私は 'fcharset'を置き換えていないので、最初に修正したものをスキップすることはできません(編集を参照)。 – JeffO
開始する前に、すべての "fcharset0 Times New Roman"を "fcharset0 Arial Rounded MT Bold"に置き換えてください。ループの繰り返しごとに、索引1で検索を開始するか、または最初に "fcharset0 Times New Roman"が出現した後に検索を開始します。 – Andomar
助けてくれてありがとう。私は以下を追加しました declare @Start int - すべてのCharIndex関数でこれを開始点として含めます - Whileループの最後の行: SET @Start = Charindex( ';'、@ next、@Start) – JeffO