Bonjour à tous,
Dans la colonne (Settings (ntext,null)) d’une table (Misc) de ma base de données j’essaye de partout supprimer le Mois/Jour qui suit l'expression <Transfert> (remplacer par exemple <Transfert>12/1 par <Transfert>).
"Mois" variant de 1 à 12 et "Jour" de 1 à 7, les 84 lignes de commandes SQL de ce type fonctionnent :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 UPDATE Misc SET Settings = CAST(REPLACE(CAST(Settings as NVarchar(max)),'<Transfert>1/1','<Transfert>') AS NText) UPDATE Misc SET Settings = CAST(REPLACE(CAST(Settings as NVarchar(max)),'<Transfert>1/2','<Transfert>') AS NText) UPDATE Misc SET Settings = CAST(REPLACE(CAST(Settings as NVarchar(max)),'<Transfert>1/7','<Transfert>') AS NText) ( ) UPDATE Misc SET Settings = CAST(REPLACE(CAST(Settings as NVarchar(max)),'<Transfert>12/1','<Transfert>') AS NText) UPDATE Misc SET Settings = CAST(REPLACE(CAST(Settings as NVarchar(max)),'<Transfert>12/7','<Transfert>') AS NText)
Je souhaite maintenant utiliser une syntaxe plus concise par le biais de deux boucles WHILE :
Ceci s’exécute sans erreur dans SSMSE mais les remplacements ne s’effectuent malheureusement pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 DECLARE @X int, @Y int SET @X = 1 SET @Y = 1 WHILE (@X <=12) BEGIN WHILE (@Y <=7) BEGIN UPDATE Misc SET Settings = CAST(REPLACE(CAST(Settings as NVarchar(max)),'<Transfert>@X/@Y','<Transfert>') AS NText) SET @Y = @Y + 1 END SET @X = @X + 1 SET @Y = 1 END
J’ai l’impression que la syntaxe de '<Transfert>@X/@Y' n’est pas correcte, quelqu’un peut-il m’expliquer pourquoi ?
Merci d’avance pour vos lumières !
Partager