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 - имя таблицы
ключевые слова - имя файла