Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Reika2000

question sql

Messages recommandés

Désolé pour le titre sans précision, mais je ne sais pas comment l'expliquer dans le titre. Donc, voila :

J'ai par exemple la colonne d'une table qui contient le prénom et le nom séparés par un espace, comment puis-je n'afficher que le prénom ?

Si j'ai oublié de préciser quelque chose, excusez moi, je débute.

Merci.

Partager ce message


Lien à poster
Partager sur d’autres sites

Tout d'abord tu n'as pas dit quel SGBD tu utilises.

 

avec mysql ça devrait ressembler à ceci...


SELECT substring(champ, 1, LOCATE(' ',champ)-1)

FROM table

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci beaucoup pour la rapidité de la réponse, ça a l'air de parfaitement correspondre à ce que je cherchais.

J'utilise Oracle à la fac (je peux pas être plus précis, je commence à peine).

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour pas te faire chier à retenir toutes les commandes différentes selon les SGBD, autant le faire en PHP avec la commande stristr (string haystack, string needle) ou strrchr (string haystack, string needle)

Elles renvoient la partie de haystack après needle.

 

L'autre moyen est d'utiliser strpos (string haystack, string needle, int offset ).

Elle renvoie la position de la première occurence de needle dans haystack.

Ensuite il te suffit d'utiliser substr (string string, int start, int length ).

 

Pour plus de détail réfère-toi à la doc PHP de Nexen ou une autre.

Partager ce message


Lien à poster
Partager sur d’autres sites

Vu que la question porte sur du SQL pur, je doute que notre ami ait l'intention d'installer PHP sur les machines de sa fac pour parvenir à ses fins. (enfin, ça dépend si il demande ça pour un TP de SQL ou pour un projet de site web PHP perso)...

Sinon, pour Oracle, SUBSTR existe bien, mais il faut utiliser INSTR(la_chaine, truc_recherché) pour trouver la position de truc_recherché dans la_chaine

A part ça, toujours avec Oracle, il est possible de faire mumuse avec RTRIM ou LTRIM (qui permettent de supprimer certains caractères à droite (resp. à gauche) d'une chaine, et qui sont utilisées d'habitude pour supprimer les espaces (' ' est le "set" par défaut)) en leur spécifiant un "set" un peu spécial, mais c'est la méthode bourrin, et le résultat serait incompréhensible :-D

Partager ce message


Lien à poster
Partager sur d’autres sites

Effectivement, la question portait sur du sql.

Au final, pour si ça interesse quelqu'un, j'ai fait :

SELECT NVL (SUBSTR (Nom,1,INSTR(Nom,' ') - 1), Nom) "Le nom"

FROM NOMS;

Le NVL, c'est parce que parfois, il peut ne pas y avoir "nom prénom" mais seulement nom (je l'ai découvert après). A part ça, c'est exactement ce qu'on ma dit au début avec les précisions apportées. Merci tout le monde, en tout cas !

 

Sinon, il y a un moyen de travailler en sql avec la même syntaxe que sous Oracle... sans Oracle ? Parce que c'est un peu lourd de pas pouvoir le travailler en dehors de la fac à part sur du papier. Ou alors un interpréteur le proche possible ? Je précise que j'y connais pratiquement rien, donc allez y doucement :P

PS: on sort peut-être un peu du cadre du post, mais bon...

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×