ID
とValue
の2つの列を持つテーブルがあります。 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
Value
文字列の123\
は不要になりました。 UPDATE
とREPLACE
を試しました。
UPDATE dbo.xxx
SET Value = REPLACE(Value, '%123%', '')
WHERE ID <= 4
スクリプトを実行してもSQL Serverがエラーを報告しませんが、更新もしません。何故ですか?
REPLACE
にはワイルドカードは必要ありません。2番目の引数に入力した文字列が見つかるだけなので、次のようにします。
UPDATE dbo.xxx
SET Value = REPLACE(Value, '123\', '')
WHERE ID <=4
(私もあなたがそれを必要としないと思うので私はまた置換に\
を加えました)
以下のように%
charsを削除してみてください
UPDATE dbo.xxx
SET Value = REPLACE(Value, '123', '')
WHERE ID <=4
すべての行を更新する必要がない大きなテーブルでクエリを より速く 実行させるには、変更される行だけを更新することも選択できます。
UPDATE dbo.xxx
SET Value = REPLACE(Value, '123', '')
WHERE ID <= 4
AND Value LIKE '%123%'
クエリ:
UPDATE tablename
SET field_name = REPLACE(field_name , 'oldstring', 'newstring')
WHERE field_name LIKE ('oldstring%');
あなたはあなたが日付コードを持っている一つのテーブルを持っています。
"32-1000"
今、あなたはすべてを交換したいです
"32-"
あり
"14-"
実行する必要があるSQLクエリは
Update Products Set Code = replace(Code, '32-', '14-') Where ...(Put your where statement in here)
誰かがあなたのスクリプトを置き換えたいと思います。
update dbo.[TABLE_NAME] set COLUMN_NAME= replace(COLUMN_NAME, 'old_value', 'new_value') where COLUMN_NAME like %CONDITION%
以下の更新クエリを使うべきです
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
上記のクエリのどちらでも動作するはずです。
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