文字列のUPDATEおよびREPLACE部分


427

私は2つのカラムを持つテーブルを持って、てきたIDValue。2列目の一部の文字列の一部を変更したい。

テーブルの例:

ID            Value
---------------------------------
1             c:\temp\123\abc\111
2             c:\temp\123\abc\222
3             c:\temp\123\abc\333
4             c:\temp\123\abc\444

これ123\で、Value文字列内のは必要ありません。私が試したUPDATEREPLACE

UPDATE dbo.xxx
SET Value = REPLACE(Value, '%123%', '')
WHERE ID <= 4

スクリプトを実行すると、SQL Serverはエラーを報告しませんが、何も更新しません。何故ですか?


8
ワイルドカードはワイルドカードとしてではなくリテラルとして扱われるため、何も置き換えられません。
stuhpa 2016年

回答:


700

にワイルドカードは必要ありませんREPLACE。2番目の引数に入力した文字列を検索するだけなので、次のように機能します。

UPDATE dbo.xxx
SET Value = REPLACE(Value, '123\', '')
WHERE ID <=4

(私も\あなたがそれを必要としないと思うので、置き換えに追加しました)


1
格子は機能しますが、ntextタイプでは機能しません:( ... >>メッセージ8116、レベル16、状態1、行21-引数データタイプntextは、replace関数の引数1では無効です
Owidat

6
私は解決策:) ===>が見つかりstackoverflow.com/questions/4341613/...
Owidatを

2
待って、`? isn't that escaping the '`文字の何がこれを間違っているのですか?
Meekohi 2017年

これは役に立ちました
Stanley Okpala Nwosa 2018

あなたの列の型がテキストまたはntext型である場合、これは動作しません、この答えを見るstackoverflow.com/questions/4341613/...
アディルH.ラザ

55

%以下のように文字を削除してみてください

UPDATE dbo.xxx
SET Value = REPLACE(Value, '123', '')
WHERE ID <=4

40

すべての行を更新する必要がない大きなテーブルでクエリをより高速に実行するには、変更される行のみを更新するように選択することもできます。

UPDATE dbo.xxx
SET Value = REPLACE(Value, '123', '')
WHERE ID <= 4
AND Value LIKE '%123%'

17

クエリ:

UPDATE tablename 
SET field_name = REPLACE(field_name , 'oldstring', 'newstring') 
WHERE field_name LIKE ('oldstring%');

完璧なクエリありがとう
Raju Paladiya

8

あなたはあなたが7文字である日付コードを持っている1つのテーブルを持っています

"32-1000"

今、あなたはすべてを交換したい

"32-"

"14-"

実行する必要があるSQLクエリは

Update Products Set Code = replace(Code, '32-', '14-') Where ...(Put your where statement in here)

3

スクリプトを置き換えたい人のために。

update dbo.[TABLE_NAME] set COLUMN_NAME= replace(COLUMN_NAME, 'old_value', 'new_value') where COLUMN_NAME like %CONDITION%


4
レビューキューから:ソースコードの前後にコンテキストを追加してください。コードのみの回答は理解するのが困難です。投稿に情報を追加できれば、質問者と将来の読者の両方に役立ちます。
2017年

1
CREATE TABLE tbl_PersonalDetail
(ID INT IDENTITY ,[Date] nvarchar(20), Name nvarchar(20), GenderID int);

INSERT INTO Tbl_PersonalDetail VALUES(N'18-4-2015', N'Monay', 2),
                                     (N'31-3-2015', N'Monay', 2),
                                     (N'28-12-2015', N'Monay', 2),
                                     (N'19-4-2015', N'Monay', 2)

DECLARE @Date Nvarchar(200)

SET @Date = (SELECT [Date] FROM Tbl_PersonalDetail WHERE ID = 2)

Update Tbl_PersonalDetail SET [Date] = (REPLACE(@Date , '-','/')) WHERE ID = 2 

1
あなたの答えが問題をどのように解決するかを説明してください。それにより、誰もがより明確に、そして将来の参照のためにあなたの解決策を理解するのに役立ちます。
アジズ

1

以下の更新クエリを使用する必要があります

UPDATE dbo.xxx SET Value=REPLACE(Value,'123\','') WHERE Id IN(1, 2, 3, 4)

UPDATE dbo.xxx SET Value=REPLACE(Value,'123\','') WHERE Id <= 4

上記のクエリはどちらも機能するはずです。


0

ペルシア語に置き換える

UPDATE dbo.TblNews
SET keyWords = REPLACE(keyWords, '-', N'،')

ヘルプ:dbo.TblNews-テーブル名

keyWords-フィールド名

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.