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

SQL Firebird Discussion :

Séparer une chaine en 2


Sujet :

SQL Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2003
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 311
    Par défaut Séparer une chaine en 2
    Bonjour à tous,

    j'ai la table suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE TABLE LISTE_JOUEURS (
        INDEX_JOUEUR   INTEGER NOT NULL,
        NOM_JOUEUR     VARCHAR(100) NOT NULL,
    );
    Je l'ai modifié pour la rendre comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE LISTE_JOUEURS (
        INDEX_JOUEUR   INTEGER NOT NULL,
        NOM_JOUEUR     VARCHAR(100) NOT NULL,
        PRENOM_JOUEUR  VARCHAR(50) DEFAULT 'Prenom' NOT NULL,
    );
    Je voudrais tronquer les données dans le champ NOM_JOUEUR en 2 pour séparer le nom et le prénom.

    Je voudrais faire une requête de ce style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE liste_joueurs lj
    SET lj.Nom_Joueur = SUBSTRING(lj.nom_joueur FROM 1 FOR POSITION(' ' IN lj.Nom_Joueur)),
        lj.prenom_joueur = SUBSTRING(lj.Nom_Joueur FROM POSITION(' ' IN lj.Nom_Joueur) FOR LENGTH(lj.Nom_Joueur))
    Mais je n'arrive pas à faire fonctionner les fonctions POSITION et LENGTH.
    Peut-être ne sont-elles tout simplement pas définies? Peut-être en UDF? Pourtant IBExpert me les propose...

    Comment je peux faire ça?

    Merci d'avance...

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Si les UDF ne sont pas définies alors à l'exécution tu obtiendras un message d'erreur du style :
    Token unknown - line XXX, char YYY
    (je parle par expérience 8) )
    mais ça ne doit pas être le cas si tu les vois sous IBExpert.

    Par conséquent, il est possible que tu ne t'en serves pas correctement : as-tu fais des recherches sur les FAQ et forums de ce site ?

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    J'ai fait quelques recherches pour ton problème : parmi les fonctions dispo sous les différents SGBD, j'ai remarqué que SUBSTRING n'est pas une fonction dispo sous Interbase et ce n'est pas non plus une fonction de la libraire rfunc (j'ai testé spontanément cette librairie).

    Donc il faudrait que tu m'indiques de quelle librairie provient cette fonction pour que je puisse t'aider à comprendre comment s'en servir.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2003
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 311
    Par défaut
    Citation Envoyé par Magnus
    J'ai fait quelques recherches pour ton problème : parmi les fonctions dispo sous les différents SGBD, j'ai remarqué que SUBSTRING n'est pas une fonction dispo sous Interbase et ce n'est pas non plus une fonction de la libraire rfunc (j'ai testé spontanément cette librairie).

    Donc il faudrait que tu m'indiques de quelle librairie provient cette fonction pour que je puisse t'aider à comprendre comment s'en servir.
    Pourtant SUBSTRING fonctionne chez moi si je fais par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUBSTRING(lj.NOM_JOUEUR FROM 1 FOR 5) FROM LISTE_JOUEURS
    Je ne sais pas où est définie la fonction substring, mais je pense que c'est dans cette DLL: ib_udf.dll

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2003
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 311
    Par défaut
    J'ai trouvé un début de réponse ici

    Seulement, comment est-ce que je peux utiliser une procédure dans une requête update?

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Ok, j'ai trouvé d'autres infos sur cette fonction SUBSTRING et je l'ai testé : ton utilisation m'a l'air correcte.

    Par contre, je n'ai trouvé de fonctions POSITION et LENGTH ; si d'ailleurs tu recherches à obtenir la longueur d'une chaine de caractères, tu peux essayer la fonction STRLEN de la bibliothèque rfunc.

    D'autre part, je comprends le traitement que tu veux faire mais je ne sais pas si dans une requête UPDATE on peux manipuler directement les champs de la table que l'on veut mettre à jour sans passer par un SELECT ?

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2003
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 311
    Par défaut
    Je ne sais pas non plus, je montrais ça en guise d'exemple.

    De toute manière je suis passé à un SELECT de tous les noms de la table, que je traite avec un programme C++, et j'update le tout...

    Du coup je suis plus embêté avec tout ça

    Merci pour ton aide!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. 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
  2. [BO XI R2] Séparer une chaine de caractère
    Par perrine1985 dans le forum Deski
    Réponses: 2
    Dernier message: 16/04/2008, 10h01
  3. Séparer une chaine de caractère
    Par fabienschmitt dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 08/11/2006, 14h57
  4. Réponses: 15
    Dernier message: 23/01/2006, 04h35
  5. Séparer une chaine en sous chaine
    Par firemax dans le forum C
    Réponses: 9
    Dernier message: 03/06/2005, 12h23

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