Ответ 1
Это легко:
update my_table
set path = replace(path, 'oldstring', 'newstring')
У меня есть таблица (SQL Sever
), которая ссылается на пути (UNC
или иным образом), но теперь путь будет меняться.
В столбце пути у меня много записей, и мне нужно изменить только часть пути, но не весь путь. И мне нужно изменить одну и ту же строку на новую, в каждой записи.
Как я могу сделать это с помощью простого update
?
Это легко:
update my_table
set path = replace(path, 'oldstring', 'newstring')
UPDATE [table]
SET [column] = REPLACE([column], '/foo/', '/bar/')
Я попробовал это, но не дал правильного результата. Следующий:
update table
set path = replace(path, 'oldstring', 'newstring') where path = 'oldstring'
UPDATE CustomReports_Ta
SET vchFilter = REPLACE(CAST(vchFilter AS nvarchar(max)), '\\Ingl-report\Templates', 'C:\Customer_Templates')
where CAST(vchFilter AS nvarchar(max)) LIKE '%\\Ingl-report\Templates%'
Без функции CAST
я получил ошибку
Тип данных аргумента ntext
недопустим для аргумента 1 функции replace
.
Вы можете использовать этот запрос
update table_name set column_name = replace (column_name , 'oldstring' ,'newstring') where column_name like 'oldstring%'
все ответы велики, но я просто хочу дать вам хороший пример
select replace('this value from table', 'table', 'table but updated')
этот оператор SQL заменит существование слова "table" (второй параметр) внутри данного оператора (первый параметр) с третьим параметром
начальное значение this value from table
, но после выполнения функции замены оно будет this value from table but updated
и вот реальный пример
UPDATE publication
SET doi = replace(doi, '10.7440/perifrasis', '10.25025/perifrasis')
WHERE doi like '10.7440/perifrasis%'
например, если мы имеем это значение
10.7440/perifrasis.2010.1.issue-1
он станет
10.25025/perifrasis.2010.1.issue-1
надеюсь, что это даст вам лучшую визуализацию
select replace(ImagePath, '~/', '../') as NewImagePath from tblMyTable
где "ImagePath" - это мое имя столбца.
" NewImagePath" является временным column Name insted из "ImagePath"
" ~/" - это моя текущая строка. (old строка)
".. / "- моя строка, содержащая строку (новая строка)
"tblMyTable" - моя таблица в базе данных.
Если тип целевого столбца отличается от varchar/nvarchar, например text, нам нужно указать значение столбца как строку и затем преобразовать его как:
update URL_TABLE
set Parameters = REPLACE ( cast(Parameters as varchar(max)), 'india', 'bharat')
where URL_ID='150721_013359670'
Вы также можете заменить большой текст для шаблона электронной почты во время выполнения, вот простой пример для этого.
DECLARE @xml NVARCHAR(MAX)
SET @xml = CAST((SELECT [column] AS 'td','',
,[StartDate] AS 'td'
FROM [table]
FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX))
select REPLACE((EmailTemplate), '[@xml]', @xml) as Newtemplate
FROM [dbo].[template] where id = 1
вам нужно заменить путь с помощью функции замены.
update table_name set column_name = replace(column_name, 'oldstring', 'newstring')
здесь column_name
ссылается на тот столбец, который вы хотите изменить.
Надеюсь, это сработает.