これらのデータを保持するその列が同じ長さであり、これらのオカレンス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/\"