387

SQL Severパス(またはその他)を参照するテーブル( )がありますUNCが、パスが変更されます。

パス列には多くのレコードがあり、パス全体ではなく、パスの一部だけを変更する必要があります。そして、すべてのレコードで同じ文字列を新しい文字列に変更する必要があります。

どうすれば簡単にこれを行うことができupdateますか?

4

10 に答える 10

647

これは簡単です:

update my_table
set path = replace(path, 'oldstring', 'newstring')
于 2009-05-02T09:45:49.977 に答える
138
UPDATE [table]
SET [column] = REPLACE([column], '/foo/', '/bar/')
于 2009-05-02T09:47:07.400 に答える
28

上記を試しましたが、正しい結果が得られませんでした。次の1つは行います:

update table
set path = replace(path, 'oldstring', 'newstring') where path = 'oldstring'
于 2012-03-01T23:26:33.320 に答える
17
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エラーが発生しました

関数の引数1の引数データ型ntextが無効ですreplace

于 2012-12-09T14:25:54.473 に答える
11

このクエリを使用できます

update table_name set column_name = replace (column_name , 'oldstring' ,'newstring') where column_name like 'oldstring%'
于 2017-04-27T10:10:45.777 に答える
9

すべての答えは素晴らしいですが、私はあなたに良い例をあげたいだけです

select replace('this value from table', 'table',  'table but updated')

このSQLステートメントは、指定されたステートメント(最初のパラメーター)内の「テーブル」(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

これにより、視覚化が向上することを願っています

于 2017-07-24T16:01:20.853 に答える
6
select replace(ImagePath, '~/', '../') as NewImagePath from tblMyTable 

ここで、「ImagePath」は私の列名です。
「NewImagePath」は一時的な列です「ImagePath」の名前
「〜/」は現在の文字列です。(古い文字列)
「../」は必要な文字列です。(新しい文字列)
「tblMyTable」はデータベース内のテーブルです。

于 2016-03-30T14:53:48.047 に答える
4

ターゲットの列タイプがテキストのようにvarchar/nvarchar以外の場合、列の値を文字列としてキャストしてから、次のように変換する必要があります。

update URL_TABLE
set Parameters = REPLACE ( cast(Parameters as varchar(max)), 'india', 'bharat')
where URL_ID='150721_013359670'
于 2015-07-21T14:09:30.900 に答える
2

置換関数を使用してパスを置換する必要があります。

update table_name set column_name = replace(column_name, 'oldstring', 'newstring')

ここでcolumn_nameは、変更する列を参照します。

それがうまくいくことを願っています。

于 2019-05-10T13:30:54.170 に答える
0

実行時に電子メールテンプレートの大きなテキストを置き換えることもできます。これはその簡単な例です。

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
于 2017-03-29T04:32:54.137 に答える