Как заменить строку в столбце таблицы SQL Server
у меня есть таблица (SQL Sever
) который ссылается на пути (UNC
или иначе), но теперь путь изменится.
В столбце путь, у меня множество записей, и мне нужно изменить только часть пути, но не весь путь. И мне нужно изменить ту же строку на новую, в каждой записи.
как я могу сделать это с простой 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
но после выполнения функции замены он будет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"
"~/" моя текущая строка.(старый строка)
"../" моя строка требуется.(новая строка)
"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