Supprimer une partie d'un champ

romu -  
 romu -
Bonjour,

Je souhaite intervenir sur une liste de champs afin d'en supprimer une partie.
Ils sont tous construis de la même manière :
NOM DE L'AUTEUR - TITRE DE L'ARTICLE

Je souhaite effacer la première partie (NOM DE L'AUTEUR)
afin qu'il ne reste que TITRE DE L'ARTICLE

Il faudrait que je puisse supprimer ce qui apparaît avant le tiret, ainsi que le tiret et l'espace qui succède le tiret.

Avez-vous une idée de requête pour effectuer cette action ?

Merci d'avance

6 réponses

  1. cyril1982 Messages postés 110 Statut Membre 12
     
    Bonjour,

    Tu peux utiliser les fonctions substr et locate, ta requête devrait ressembler à ça :
    update ma_table set mon_champ = SUBSTR(mon_champ, LOCATE(' - ', mon_champ) + 3)

    Je ne suis pas sûr du +3.

    Pou plus de précision, tu peux voir la doc des fonctions qui manipulent des string :
    https://dev.mysql.com/doc/refman/8.0/en/string-functions.html
    1
  2. romu
     
    Merci beaucoup de ta réponse.

    Effectivement c'est la bonne piste.
    Par contre, je ne comprends pas le +3
    0
  3. cyril1982 Messages postés 110 Statut Membre 12
     
    Le locate va te donner la position de la sous-chaîne " - ", mais comme tu ne veux pas garder celle-ci on fait un + 3 ( 3 = longueur de " - ") afin de commencer le substr au niveau du titre de l'article.
    0
  4. romu
     
    Super, ça fonctionne.

    C'est un site wordpress.
    Voici ma requete :

    update wpp_posts set post_title = SUBSTR(post_title, LOCATE(' - ', post_title) + 3)

    Par contre, ça ne doit impacter que les post et non les pages
    donc il faut que post_type=post

    Tu as une idée de comment l'intégrer ?

    Merci beaucoup Cyril
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cyril1982 Messages postés 110 Statut Membre 12
     
    De rien.

    Je ne connais pas wordpress !!
    0
  7. romu
     
    Je pense que la bonne requête est celle-ci :

    update wpp_posts set post_title = SUBSTR(post_title, LOCATE(' - ', post_title) + 3) where post_type="post"

    Encore merci pour ton aide ;)
    0