Как заменить строку в столбце таблицы SQL Server
у меня есть таблица (SQL Sever
), который ссылается на пути (UNC
или иначе), но теперь путь изменится.
в столбце path у меня есть много записей, и мне нужно изменить только часть пути, но не весь путь. И мне нужно изменить одну и ту же строку на новую, в каждой записи.
как я могу сделать это с простой update
?
9 ответов
Я пробовал выше, но это не дало правильного результата. Делает следующее:
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 из .
вы можете использовать этот запрос
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 заменит существование слова " таблица" (второй параметр) внутри данного оператора (первый параметр) с третьим параметром
начальное значение this value from table
но после выполнения функции replace это будет 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" является временным имя столбца в поле "ImagePath"
"~/" моя текущая строка.(старый string)
"../" моя строка требуется.(новая строка)
"tblMyTable" - это моя таблица в базе данных.
Если целевой тип столбца отличается от varchar / nvarchar, как текст, нам нужно привести значение столбца в виде строки, а затем преобразовать его как:
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