Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2936 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Afficher les x premiers mots d'un enregistrement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL] Afficher les x premiers mots d'un enregistrement

n°1588580
brolouille
Posté le 19-07-2007 à 08:50:38  profilanswer
 

Bonjour à tous,
 
Vous connaissez certainement la fonction LIMIT de SQL. J'aimerais savoir s'il existe de la meme facon une fonction qui me permettrait de sélectionner qu'une partie d'une valeur d'un enregistrement.
 
Je vais m'illustrer :
Soit une table MA_TABLE avec un champ MON_CHAMP de type LONGTEXT
Je voudrais faire un SELECT sur MON_CHAMP de manière à ce qu'il me retourne disons les 30 premiers caractères (ou 30 premiers mots serait encore mieux). Est ce que cela est possible directement via SQL ?
 
Merci de vos réponses

mood
Publicité
Posté le 19-07-2007 à 08:50:38  profilanswer
 

n°1588589
anapajari
s/travail/glanding on hfr/gs;
Posté le 19-07-2007 à 09:04:51  profilanswer
 

30 premiers caractères: select substring(tonChamps,1,30) ...
30 premiers mots: pas vraiment possible directement dans la directement dans une requête ( a moins de faire une procédure). Pourquoi ne pas le faire coté traitement?
 
Note: LIMIT est tout sauf du SQL. C'est une instruction "spécifique" MySQL.

n°1588596
casimimir
Posté le 19-07-2007 à 09:15:43  profilanswer
 

pour le nombre de mot c'est un peu bancal mais un truc du genre un peu plus affiné devrait pouvoir marcher, il y a surement des cas spéciaux a gerer.
 
en oracle ca donnerait +/-:
 

Code :
  1. select substr(LaChaineDeCaratere,1,length(instr(replace(LaChaineDeCaratere,'''',' '),' ',30))) les30PremiersMots
  2. from maTable


 
ca correspond a aller chercher la position du 30ème espace, en remplacant d'abord les ' par un espace pour que "l'espace" soit consideré comme deux mots, et des qu'on a ce nombre de caracteres on va chercher la sous-chaine.
la il y a des adaptations a faire mais l'idée est la

n°1588601
anapajari
s/travail/glanding on hfr/gs;
Posté le 19-07-2007 à 09:26:41  profilanswer
 

c'est possible ce que tu dis mais dans la réalité c'est trop compliqué à gérer car il faut également prendre en compte la ponctuation ou les problèmes genre double espace.

 

sinon dans ton machin je pense qu'il y a deux erreurs :o

  • le lenght ne sert à rien car instr retourne déjà un entier
  • il manque un +30 après le instr correspondant aux caractères "supprimés" par ton replace.


Je maintiens que c'est pas une bonne idée de le faire dans le select :o


Message édité par anapajari le 19-07-2007 à 09:27:11
n°1588606
brolouille
Posté le 19-07-2007 à 09:34:00  profilanswer
 

anapajari a écrit :

30 premiers caractères: select substring(tonChamps,1,30) ...
30 premiers mots: pas vraiment possible directement dans la directement dans une requête ( a moins de faire une procédure). Pourquoi ne pas le faire coté traitement?
 
Note: LIMIT est tout sauf du SQL. C'est une instruction "spécifique" MySQL.


 
oops autant pour moi. ca fait tellement longtemps que je ne fais plus que du MySQL que j'ai généralisé le LIMIT :)
sinon pour le substring, ca marche impecable, merci
je vais essayer de bidouiller l'autre soluce pour selectionner que les mots


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Afficher les x premiers mots d'un enregistrement

 

Sujets relatifs
afficher fenetreCopie d'un enregistrement dans une table backup
[oracle PL/SQL] Problème de mis à jour[résolu] Afficher données d'un txt en tableau
résoluDonnées tronquées dans SPOOL SQL
Enregistrer + afficher + envoi emailExtraction de plusieurs requêtes SQL Server sous Word ou Excel
[MS SQL]faire un UPDATE sur plusieur table en meme tempsSupervison SQL 2000
Plus de sujets relatifs à : [SQL] Afficher les x premiers mots d'un enregistrement


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR