2016-06-17 17 views
-1

私はアプリケーションのURLが保存される構成テーブルを持っています。アプリケーションはさまざまなサーバー上にあり、新しいサーバーをセットアップする必要があるたびに、sqlのwhileループを選択して実行することによって値を更新する必要があります。 Scenerios更新一致するパターンに基づいた列の一部

表のようなものです:設定 値

Id | key | DefaultUrl 

1 | Key1 | www.xxx.com/something1 

2 | key2 | www.xxx.com/something2 

3 | key3 | www.xxx.com/something3 

このパターンや他のいくつかのテーブルの上に、より多くのキーがあまりにもあります。これは従来のソフトウェアなので、構造を変更することはできません。

新しいサーバーをセットアップする必要があるときは、いつでもURL部分をwww.xxx.comからwww.yyy.comに置き換える必要があります。これを実現するために、私は

  • のようなものがデータを通じてのようなパターンに
  • ループを選択クエリを作成し、1ですべての行1でデータを交換ください。

今、私は同じ目的を達成するためのより良いアプローチを探しています。助けてください!

+0

あなたはすでに何か試しましたか? – xdd

+0

何も私の心やGoogleには何も来ません、私はちょうどこの選択とループのアプローチを使用 –

+1

"私は構造を変更することはできません" - 別の列の静的な部分と動的な部分を持つ新しいベーステーブルについて'VIEW'は元の(今はドロップされた)テーブルと同じ名前を持つ単一の列に再び分割部分を戻しますか? – onedaywhen

答えて

1

唯一の問題は、www.xxx.comがURLの途中にあり、置き換えられない場合です。たとえば、URL文字「' '」に禁止されているものを使用してください。

UPDATE [Configuration Values] 
SET DefaultUrl = replace(' '+DefaultUrl, ' www.xxx.com', 'www.yyy.com') 
WHERE DefaultUrl LIKE 'www.xxx.com%' 
0

replace関数を使用できます。私はあなたがこのような何かをしたい疑い

DECLARE @Table TABLE (
    id INT 
    ,[key] VARCHAR(10) 
    ,DefaultUrl VARCHAR(100) 
    ) 

INSERT INTO @Table 
VALUES (
    1 
    ,'Key1' 
    ,'www.xxx.com/something1' 
    ) 
    ,(
    2 
    ,'key2' 
    ,'www.xxx.com/something2' 
    ) 
    ,(
    3 
    ,'key3' 
    ,'www.xxx.com/something3' 
    ) 

SELECT replace(DefaultUrl, 'www.xxx.com', 'www.yyy.com') 
FROM @Table 

UPDATE @Table 
SET DefaultUrl = replace(DefaultUrl, 'www.xxx.com', 'www.yyy.com') 
where ..... 
0

、このようにしてみてください。

insert into configuration (key, defaulturl, . . .) 
    select key, replace(defaulturl, 'www.xxx.com', 'www.yyy.com') 
    from configuration 
    where defaulturl like '%www.xxx.com%'; 

これは構成テーブルにYYY用xxxのためのキー値を複製します。

関連する問題