あなたはテキストを置き換えるものが明確ではありませんでした。この解決策は、あなたが500以下の数字を置き換えることを考えていると仮定します。^ & 11 ^私は変数を作成したので(@replaceTxt)、あなたは結果を使いこなすことができます。私の解決策はpatternSplitCMです。
declare @string varchar(8000) =
'blah blah blah... ^&20^&20^ ...my phone number is 555-1234 some characters ^&3000^&3000^ some characters ^&134^&134^ some characters ^&20^&20^... with the same string ^&600^&600^...';
declare @replaceTxt varchar(50) = '555';
select newstring =
(
select --ps.*,
case when matched = 1 and
(charindex('^', ps.item)*charindex('&', ps.item)*patindex('%[0-9]%', ps.item)) <> 0
then
replace((
select case when cast(item as int) < 500 then '^&'[email protected]+'^' else '^&'+item+'^' end
from dbo.PatternSplitCM(ps.item, '[0-9]')
where [Matched]=1 for xml path(''), type).value('.', 'varchar(8000)'), '^^', '^')
else item end +''
from dbo.PatternSplitCM(@string, '[0-9&^]') ps
order by ps.ItemNumber
for xml path(''), type
).value('.', 'varchar(8000)');
結果:
blah blah blah... ^&555^&555^ ...my phone number is 555-1234 some characters ^&3000^&3000^ some characters ^&555^&555^ some characters ^&555^&555^... with the same string ^&600^&600^...
編集:いないすべての数字は、このソリューションで変更されていることを示すために、サンプルデータに電話番号が含まれています。
改善のためのヒントについては、[こちら](http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)をお読みください。質問。適切なソフトウェア(MySQL、Oracle、DB2など)とバージョンの両方でデータベースの質問にタグを付けると便利です。 'sql-server-2014'です。構文と機能の相違は、しばしば答えに影響します。 'tsql'は選択肢を絞り込みますが、データベースは指定しないことに注意してください。 – HABO