UPDATE и REPLACE часть строки

У меня есть таблица с двумя столбцами, ID и Value. Я хочу изменить часть некоторых строк во втором столбце.

Пример таблицы:

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

При выполнении script SQL Server не сообщает об ошибке, но ничего не обновляет. Почему это?

Ответ 1

Вам не нужны подстановочные знаки в REPLACE - он просто находит строку, которую вы вводите для второго аргумента, поэтому следующее должно работать:

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

(Я также добавил \ в замене, поскольку я предполагаю, что вам это тоже не нужно)

Ответ 2

Попробуйте удалить символы % ниже

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

Ответ 3

Чтобы сделать запрос быстрее в больших таблицах, где не каждая строка нуждается в обновлении, вы также можете выбрать только обновленные строки, которые будут изменены:

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

Ответ 4

запрос:

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

Ответ 5

У вас есть одна таблица, где у вас есть код даты, который имеет семь символов, что-то вроде

"32-1000"

Теперь вы хотите заменить все

"32-"

С

"14-"

Запросом SQL, который вы должны выполнить, является

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

Ответ 6

Для тех, кто хочет заменить ваш сценарий.

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

Ответ 7

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 

Ответ 8

вы должны использовать приведенный ниже запрос на обновление

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

Любой из вышеперечисленных запросов должен работать.

Ответ 9

Попробуйте это:

UPDATE dbo.tbl_example
SET section = REPLACE(section, 'RafSeparator', '@')

Ответ 10

заменить на персидское слово

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

помощь: dbo.TblNews - имя таблицы

ключевые слова - имя файла