パス(UNC
など)を参照するテーブル(SQL Sever
)がありますが、今度はパスが変わります。
Path列にはたくさんのレコードがあり、パスの一部だけを変更する必要がありますが、パス全体を変更する必要はありません。そして、すべてのレコードで、同じ文字列を新しい文字列に変更する必要があります。
単純なupdate
を使ってこれを行うにはどうすればよいですか?
これは簡単です。
update my_table
set path = replace(path, 'oldstring', 'newstring')
UPDATE [table]
SET [column] = REPLACE([column], '/foo/', '/bar/')
上記を試しましたが、正しい結果が得られませんでした。次のようにします。
update table
set path = replace(path, 'oldstring', 'newstring') where path = 'oldstring'
UPDATE CustomReports_Ta
SET vchFilter = REPLACE(CAST(vchFilter AS nvarchar(max)), '\\Ingl-report\Templates', 'C:\Customer_Templates')
where CAST(vchFilter AS nvarchar(max)) LIKE '%\\Ingl-report\Templates%'
CAST
関数がないとエラーになりました
引数データ型ntext
は、replace
関数の引数1には無効です。
あなたはこのクエリを使用することができます
update table_name set column_name = replace (column_name , 'oldstring' ,'newstring') where column_name like 'oldstring%'
すべての答えは素晴らしいですが、私はちょうどあなたに良い例を挙げたいと思います。
select replace('this value from table', 'table', 'table but updated')
このSQLステートメントは、与えられたステートメント(最初のパラメーター)内のWord "table"(2番目のパラメーター)の存在を3番目のパラメーターに置き換えます。
初期値はthis value from table
ですが、replace関数を実行した後はthis value from table but updated
になります
そしてこれが本当の例です
UPDATE publication
SET doi = replace(doi, '10.7440/perifrasis', '10.25025/perifrasis')
WHERE doi like '10.7440/perifrasis%'
たとえば、この値があると
10.7440/perifrasis.2010.1.issue-1
それになります
10.25025/perifrasis.2010.1.issue-1
これにより視覚化が良くなることを願っています
select replace(ImagePath, '~/', '../') as NewImagePath from tblMyTable
"ImagePath"は私の列の名前です。
"NewImagePath"は "ImagePath"からインスピレーションされた一時的な列の名前です
"〜/"は私の現在の文字列です(古い文字列)
"../"は私の必要な文字列です。(新しい文字列)
"tblMyTable"はデータベース内の私のテーブルです。
ターゲット列の型が text のようにvarchar/nvarchar以外の場合は、列値を文字列としてキャストしてから次のように変換する必要があります。
update URL_TABLE
set Parameters = REPLACE ( cast(Parameters as varchar(max)), 'india', 'bharat')
where URL_ID='150721_013359670'
実行時に電子メールテンプレートの大きなテキストを置き換えることもできます。これはその簡単な例です。
DECLARE @xml NVARCHAR(MAX)
SET @xml = CAST((SELECT [column] AS 'td','',
,[StartDate] AS 'td'
FROM [table]
FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX))
select REPLACE((EmailTemplate), '[@xml]', @xml) as Newtemplate
FROM [dbo].[template] where id = 1
あなたは置換機能の助けを借りてパスを置き換える必要があります。
update table_name set column_name = replace(column_name, 'oldstring', 'newstring')
ここでcolumn_name
はあなたが変更したい列を参照します。
それがうまくいくことを願っています。