J'ai une table (SQL Sever
) qui référence les chemins (UNC
ou autre), mais maintenant le chemin va changer.
Dans la colonne de chemin, j'ai beaucoup d'enregistrements et je n'ai besoin de changer qu'une partie du chemin, mais pas le chemin en entier. Et je dois changer la même chaîne pour la nouvelle, dans chaque enregistrement.
Comment puis-je faire cela avec un simple update
?
C'est aussi simple que ça:
update my_table
set path = replace(path, 'oldstring', 'newstring')
UPDATE [table]
SET [column] = REPLACE([column], '/foo/', '/bar/')
J'ai essayé ce qui précède mais cela n'a pas donné le bon résultat. Le suivant fait:
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%'
Sans la fonction CAST
j'ai eu une erreur
Le type de données d'argument ntext
n'est pas valide pour l'argument 1 de la fonction replace
name__.
Vous pouvez utiliser cette requête
update table_name set column_name = replace (column_name , 'oldstring' ,'newstring') where column_name like 'oldstring%'
toutes les réponses sont bonnes mais je veux juste vous donner un bon exemple
select replace('this value from table', 'table', 'table but updated')
cette instruction SQL remplacera le mot "table" (second paramètre) à l'intérieur de l'instruction donnée (premier paramètre) par le troisième paramètre
la valeur initiale est this value from table
mais après l'exécution de la fonction replace, il s'agira de this value from table but updated
et voici un exemple réel
UPDATE publication
SET doi = replace(doi, '10.7440/perifrasis', '10.25025/perifrasis')
WHERE doi like '10.7440/perifrasis%'
par exemple si nous avons cette valeur
10.7440/perifrasis.2010.1.issue-1
il deviendra
10.25025/perifrasis.2010.1.issue-1
espérons que cela vous donne une meilleure visualisation
select replace(ImagePath, '~/', '../') as NewImagePath from tblMyTable
où "ImagePath" est mon nom de colonne.
"NewImagePath" est le nom de la colonne de temporisation installée de "ImagePath"
"~ /" est ma chaîne actuelle. (ancienne chaîne)
"../" est la chaîne requise. (nouvelle chaîne)
"tblMyTable" est ma table dans la base de données.
Si le type de colonne cible est différent de varchar/nvarchar comme text, nous devons convertir la valeur de la colonne en chaîne, puis la convertir en:
update URL_TABLE
set Parameters = REPLACE ( cast(Parameters as varchar(max)), 'india', 'bharat')
where URL_ID='150721_013359670'
vous devez remplacer le chemin à l'aide de la fonction replace.
update table_name set column_name = replace(column_name, 'oldstring', 'newstring')
ici column_name
fait référence à la colonne que vous souhaitez modifier.
J'espère que ça va marcher.
Vous pouvez également remplacer un texte volumineux pour un modèle de courrier électronique au moment de l’exécution. Voici un exemple simple.
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