IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Expression pour substitution


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Expression pour substitution
    Bonjour,

    Je cherche une expression régulière (à intégrer dans un UPDATE SQL) me permettant du supprimer la fin d'un string dès que je rencontre un caractère pour la seconde fois.

    Exemple :

    String initial = "Valeur1;Valeur2;Valeur3;Valeur4"

    String après REGEX = "Valeur1;Valeur2"

    Donc tout ce qui se trouve après le second ";" y compris doit être supprimé.

    Merci pour vos suggestions !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je doute qu'on puisse faire un truc pareil, les expressions régulières en SQL n'ont de plus pas beaucoup de fonctionnalités.
    Mais il faudrait de toute façon être plus précis sur ta définition : dans ton exemple le premier caractère rencontré pour la seconde c'est "V" par ";".
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Bonjour,

    Les possibilités des expressions régulières avec MySQL sont effectivement assez limitées. Celles-ci tendant vers la norme POSIX ne bénéficient pas des possibilités offertes par les PCRE.
    Dans le cas présent REGEXP ne sera donc d' aucun secours.

    Si c'est pour un caractère particulier et déterminé à l'avance comme par exemple un point-virgule. On peut utiliser les fonctions LOCATE et SUBSTRING :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUBSTRING( @CHAINE := 'Valeur1;Valeur2;Valeur3;Valeur4', 1, LOCATE( @CARACTERE := ';', @CHAINE, LOCATE( @CARACTERE, @CHAINE ) + 1 ) - 1 );
    On peut ensuite intégrer cela dans un UPDATE en supprimant le SELECT du début.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE DB_TRUC.T_MACHIN SET CHAMP_BIDULE = SUBSTRING( CHAMP_BIDULE, 1, LOCATE( @CARACTERE := ';', CHAMP_BIDULE, LOCATE( @CARACTERE, CHAMP_BIDULE ) + 1 ) - 1 );
    Ce qui devrait marcher!

    Bon courage.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  4. #4
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Il existe également, une librairie permettant d'utiliser PCRE avec MySQL: https://github.com/mysqludf/lib_mysqludf_preg
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

Discussions similaires

  1. [RegEx] Besoin d'une expression pour formater une chaîne
    Par Space Cowboy dans le forum Langage
    Réponses: 9
    Dernier message: 17/08/2007, 10h29
  2. expression pour un Copier valeur
    Par melodyyy dans le forum Général VBA
    Réponses: 9
    Dernier message: 01/12/2006, 12h09
  3. Compilation avec Visual C++ 2005 Express pour avoir un module python
    Par Freyja dans le forum Déploiement/Installation
    Réponses: 6
    Dernier message: 13/07/2006, 12h12
  4. Réponses: 3
    Dernier message: 31/05/2006, 11h43
  5. Expression pour calcul de date
    Par thufir hawat dans le forum Access
    Réponses: 1
    Dernier message: 18/12/2005, 12h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo