これらのデータを保持するその列が同じ長さであり、これらのオカレンス22, 26, 29,...が文字列の先頭から同じ位置にある場合。次に、SQL Server の場合、 を使用REPLACEし SUBSTRINGてCHARINDEXそれを行うことができます。
DECLARE @s VARCHAR(50);
DECLARE @sub INT;
SET @s = 's:27:\"http://somedomain.com/\"';
SET @sub = CONVERT(INT, SUBSTRING(@s, CHARINDEX(':', @s) + 1, 2));
SELECT REPLACE(REPLACE(@s, 'somedomain', 'someOtherdomain'), @sub, @sub + 5);
s:number:\"http://somedomain.com/\"となりますs:number + 5:\"http://someOtherdomain.com/\"。
そのテーブルに対してを実行したい場合は、次のUPDATEように記述できます。
UPDATE @t
SET s = REPLACE(REPLACE(s, 'somedomain', 'someOtherdomain'),
CONVERT(INT, SUBSTRING(s, CHARINDEX(':', s) + 1, 2)),
CONVERT(INT, SUBSTRING(s, CHARINDEX(':', s) + 1, 2)) + 5);
このクエリが行うことは、の出現を検索して にsomedomain置き換えsomeOtherdomain、最初の 2 つの間の数値を取得し、:それを に変換しINTて同じ数値に置き換えること + 5です。前のクエリを実行した後のデータは次のようになります。
s:27:\"http://someOtherdomain.com/\"
s:31:\"http://someOtherdomain.com/abc/\"
s:34:\"http://someOtherdomain.com/abcdef/\"