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

PHP & Base de données Discussion :

split d'une chaine ce caractères


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 90
    Par défaut split d'une chaine ce caractères
    Bonjour,

    est ce qu'il y a un moyen pour faire un split d'une chaine de caractères en fonction d'un caractère donné (un tiret '-' par exemple) avec SQL ?

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    pour avoir un bout par ligne ?

  3. #3
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 90
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    pour avoir un bout par ligne ?
    pour avoir un bout, c'est tout.
    par exemple, si ma chaine de caractère est 'a-b-c-d', je veux avoir le résultat a tout seul, b tout seul, etc..

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par ROUGE87 Voir le message
    pour avoir un bout, c'est tout.
    par exemple, si ma chaine de caractère est 'a-b-c-d', je veux avoir le résultat a tout seul, b tout seul, etc..
    je comprend bien mais, ligne par ligne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    table
    -----
    a
    b
    c
    d

  5. #5
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 90
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    je comprend bien mais, ligne par ligne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    table
    -----
    a
    b
    c
    d
    ca ne me dérange pas ligne par ligne ou pas, car ce n'est qu'un moyen pour moi pour mettre le résultat dans le where de ma requete. Par exemple, une requete du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT * FROM Table
    where name = a
    moi je veux que le a soit le résultat d'un split du string d'origine.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    si tu veux faire une recherche du type "monchamp de la forme 'a' ou 'b' ou 'c' ou 'd'" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $machaine 	= 'a-b-c-d';
    $in_chaine	= str_replace('-',',',$machaine); // -> de la forme a,b,c,d
    // la requete
    $requete	= "SELECT ......... WHERE monchamp IN (".$in_chaine.");";
    ?>

  7. #7
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 90
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,
    si tu veux faire une recherche du type "monchamp de la forme 'a' ou 'b' ou 'c' ou 'd'" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $machaine 	= 'a-b-c-d';
    $in_chaine	= str_replace('-',',',$machaine); // -> de la forme a,b,c,d
    // la requete
    $requete	= "SELECT ......... WHERE monchamp IN (".$in_chaine.");";
    ?>
    Mais apparemment, ce n'est pas ce que tu veux ...
    Merci pour la réponse mais c'est pas vraiment ce que je veux.. le dernier post explique bien ce que je veux.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Si tu veux des resultats séparés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $machaine 	= 'a-b-c-d';
    $bouts_chaine	= explode('-',$machaine); // -> array des bouts de chaine
    // les requetes successives
    for ($i=0; $i<sizeof($bouts_chaine); $i++) {
    	$requete	= "SELECT ......... WHERE monchamp = '".$bouts_chaine[$i]."';";
    	// ...
    }
    ?>

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    for ($i=0; $i<sizeof($bouts_chaine); $i++) {
    [/code]
    foreach plutôt, de plus sizeof est un alias, et est appelé a chaque tour de boucle

  10. #10
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 90
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Si tu veux des resultats séparés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $machaine 	= 'a-b-c-d';
    $bouts_chaine	= explode('-',$machaine); // -> array des bouts de chaine
    // les requetes successives
    for ($i=0; $i<sizeof($bouts_chaine); $i++) {
    	$requete	= "SELECT ......... WHERE monchamp = '".$bouts_chaine[$i]."';";
    	// ...
    }
    ?>
    sans la boucle for, je voudrais toujours récupérer uniquement le premier bout ou le second ou le troisème (dans le sens que je connais toujours la position de la partie à récupérer.
    Si je suis ton code, pourquoi un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    explode('-',$machaine)[1]
    ne marche pas ?

  11. #11
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    normale, faut le faire une variable le [1]

  12. #12
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 90
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    normale, faut le faire une variable le [1]
    J'ai pas bien saisi ce que tu voulais me dire

  13. #13
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par ROUGE87 Voir le message
    J'ai pas bien saisi ce que tu voulais me dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $vars = explode('-',$machaine);
    echo $vars[1];

  14. #14
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 90
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $vars = explode('-',$machaine);
    echo $vars[1];
    j'ai cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Error Code : 1064
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$vars = explode('-', $machaine)' at line 1

  15. #15
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    c'est pas mettre dans ta requete SQL ça...
    montre tout ton code

  16. #16
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 90
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    c'est pas mettre dans ta requete SQL ça...
    montre tout ton code
    voici ma requête qui marche bien avec des substring :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM TABLE 
    WHERE category = SUBSTRING('7-MP1-1-CD1-1',1,LOCATE('-', '7-MP1-1-CD1-1')-1)
    je voudrais éviter les substring (et surtout les substring imbriqués) pour pouvoir faire une requête propre.

Discussions similaires

  1. Split d'une chaine de caractères
    Par ourseblanche dans le forum SQL
    Réponses: 20
    Dernier message: 11/04/2017, 11h59
  2. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  3. Séparer une chaine de caractères sans split
    Par ndsaerith dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 24/05/2011, 16h05
  4. [LV2009] Split d'une chaine de caractère
    Par Super2006 dans le forum LabVIEW
    Réponses: 4
    Dernier message: 05/09/2010, 01h35
  5. Réponses: 2
    Dernier message: 06/12/2002, 07h50

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