Remplacer une valeur spécifique dans une liste séparée par des virgules à l'aide de SQL
P粉248602298
P粉248602298 2023-08-08 17:29:43
0
1
486
<p>Je dois remplacer des valeurs spécifiques dans une liste séparée par des virgules. </p> <p>Par exemple, supposons que j'ai une colonne nommée Tags, remplie avec le contenu suivant : Vacances, Vacances 2023, Test. </p> <p>Je dois seulement remplacer le mot « Vacances » par « Vacances », mais je ne souhaite pas remplacer « Vacances 2023 » par « Vacances 2023 ». </p> <p>J'ai essayé d'utiliser la fonction replace et LIKE dans la clause WHERE, mais cela n'a pas fonctionné. J'utilise PHP comme backend, mais je ne sais pas comment éviter cela. </p> <p>Voici le code SQL que j'utilise :</p><p> <code>UPDATE Expenses SET Tags = REPLACE(Tags, :original, :replace), Updated_date = :update_date WHERE Id_user = :id_user AND Tags LIKE :original_like</code></p> <ul> <li><em>:original</em> contient la liste : <strong>Fêtes, Vacances 2023, Test</strong></li> <li><em>:replace</em> contiennent uniquement le mot <strong>Holiday</strong></li> </ul><p><br /></p>
P粉248602298
P粉248602298

répondre à tous(1)
P粉180844619

Ajoutez une virgule de début et un espace avant votre valeur, puis ajoutez une virgule de fin - puis remplacez , Holidays, par , Holiday,.
nSupprimez à nouveau les virgules de début et de fin dans les résultats

SELECT TRIM(',' FROM REPLACE(CONCAT(', ', Tags, ','), ', Holidays,', ', Holiday,'))

Exemple d'utilisation d'une valeur spécifique No Holidays, Holidays, Holidays 2023, Holidays, Test, Holidays insérée directement au lieu de l'obtenir de la colonne vacances :

SELECT TRIM(',' FROM REPLACE(
  CONCAT(', ', 'No Holidays, Holidays, Holidays 2023, Holidays, Test, Holidays', ','),
  ', Holidays,',
  ', Holiday,')
)

Le résultat sera :

No Holidays, Holiday, Holidays 2023, Holiday, Test, Holiday
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal