533

私は2つの列を持つテーブルを持っていIDますValue. 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文字列の は不要になりました。私は試しUPDATEてみましたREPLACE

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

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

4

9 に答える 9

854

にワイルドカードは必要ありません-2REPLACE番目の引数に入力した文字列を見つけるだけなので、次のように動作するはずです:

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

置換する列が型であるtextntext、nvarchar にキャストする必要がある場合

UPDATE dbo.xxx
SET Value = REPLACE(CAST(Value as nVarchar(4000)), '123', '')
WHERE ID <=4
于 2013-06-28T12:57:54.957 に答える
71

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

UPDATE dbo.xxx
SET Value = REPLACE(Value, '123', '')
WHERE ID <=4
于 2013-06-28T12:56:36.717 に答える
56

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

UPDATE dbo.xxx
SET Value = REPLACE(Value, '123', '')
WHERE ID <= 4
AND Value LIKE '%123%'
于 2014-02-06T16:08:15.540 に答える
9

次のような7文字の日付コードを持つテーブルが1つあります

"32-1000"

今、あなたはすべてを置き換えたい

"32-"

"14-"

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

Update Products Set Code = replace(Code, '32-', '14-') Where ...(Put your where statement in here)
于 2014-02-20T07:52:11.830 に答える
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

上記のクエリのいずれかが機能するはずです。

于 2017-01-06T11:56:36.807 に答える
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 
于 2015-02-03T11:26:19.377 に答える