recherche

Maison  >  Questions et réponses  >  le corps du texte

Remplacer une valeur spécifique dans une liste séparée par des virgules à l'aide de SQL

<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粉248602298P粉248602298491 Il y a quelques jours502

répondre à tous(1)je répondrai

  • P粉180844619

    P粉1808446192023-08-09 16:23:28

    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

    répondre
    0
  • Annulerrépondre