|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 109 ![]() |
bonjour tout le monde,
J'ai un probleme pour la detection d'une chaine de caractere. Je vais selecter par exemple un champs qui contient les donnees comme suit: xxxxx/1 xxxxx/2 yyyy/1 yyyy/1 je veux la fonction qui detecte le caractere qui existe aprés le "/" si quelqu'un peut m'aider je serai reconnaissante et merci bcp
__________________
Ne pensez pas trop |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
InStr et SubStr
|
|
|
10
|
|
|
#3 |
|
Membre du Club
![]() ACInscription : octobre 2010 Messages : 28 ![]() |
Bonjour,
L'instruction INSTR va vous permettre de trouver la position du / et l'intruction SUBSTR va vous permettre d'extraire "le morceau" de la chaîne souhaitée... A disposition si problème(s) |
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() |
Je donne la réponse mais j'espère que tu as quand même cherché en début d'après midi
![]() Code :
SELECT substr(tonChamp, instr(tonChamp,'/') + 1, length(tonChamp)) FROM dual; Ps : utilises "sélectionner" au lieu de "sélecter" ça fait moins geek
|
|
|
20
|
|
|
#5 |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 109 ![]() |
merci bcp les amis pour vos reponses je vais les essayer
__________________
Ne pensez pas trop |
|
|
00
|
|
|
#6 | |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Citation:
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Non ...
Imaginons que "/" n'existe pas dans votre colonne, que va vous retourner Code :
substr(tonChamp, instr(tonChamp,'/') + 1, length(tonChamp))
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#9 | |
|
Membre éclairé
![]() |
bah je suis parti du cahier des charges :
Citation:
Et je ne comprend pas pourquoi/comment le length(champ) irait au-delà de la taille réelle de ma colonne ? |
|
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
exemple :
Colonne = "A/1" Code :
Substr(colonne,instr(colonne,'/')+1, length (colonne)) Or vous n'avez pas 3 caracteres apres votre "/". ORACLE permet de le faire, mais ce n'est absolument pas propre...
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#11 |
|
Membre éclairé
![]() |
En effet.
Quelle solution propre adopter dans ces cas là ? |
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
faire un différentiel
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#13 |
|
Membre éclairé
![]() |
Genre :
Code :
SELECT substr('a/1', instr('a/1','/') + 1, length('a/1') - instr('a/1','/')) FROM dual; )
|
|
|
00
|
|
|
#14 |
|
Membre du Club
![]() ACInscription : octobre 2010 Messages : 28 ![]() |
et le deuxième paramètre du substr n'est pas obligatoire :
Code :
SELECT substr('cou/cou',instr('cou/cou','/')+ 1) FROM dual; |
|
|
10
|
|
|
#15 |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 109 ![]() |
Merci bcp les amis pour vas reponse et surtt "macben" votre solution a bien marché
une remarque tt les champs selectionner contient le "/" donc pas de probleme. j'ai une autre question si c'est possible: " nom caractere retourner est un nombre je veux faire un auto-increment pour ces nombre retourner. c'est à dire par exemple mes chaine etait "REF67887/3" , "REF67823/3","REF67899/3" le code donner il va retourner : 3 3 3 Alors moi je veux incrementer ces nombre de tel façon qu'il donne 3 4 5 j'espere que mon problème est claire, et merci beaucoup pour vos reponses qui m'ont vraiment débloqué.
__________________
Ne pensez pas trop |
|
|
00
|
|
|
#16 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Utilisez la fonction analytique row_number.
|
|
|
00
|
|
|
#17 |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 109 ![]() |
Merci "mnitu" pour ta reponse, mais je crois le row_number va filtrer les enregistrement retourner selon un interval donné!
Mais mon probleme c'est de pouvoir incrementer les enregistrements retournés, comme c'est deja expliqué. et merci
__________________
Ne pensez pas trop |
|
|
00
|
|
|
#18 | ||||
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 925 ![]() |
c'est très flou comme spécification...
jette un oeil sur le code ci-dessous, peut-être ça t'aidera Code :
Code :
|
||||
|
10
|
|
|
#19 |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 109 ![]() |
Merci bcp "laurentschneider" vous etes fort
je vais profiter un peu de votre expertise et faire une derniere demande pour arriver à mon but voila, mon but c'est d'avoir deux parti de la chaine 'xxxx/1' avoir 'xxxx/' et le nombre 1 que je vais incrementer ( votre code repond exactement à la duxieme partie) et concaténer les deux aprés incrementation comme suit: X X1 N N1 X3 XX/1 XX/ 1 1 XX/1 XX/1 XX/ 1 2 XX/2 yy/3 yy/ 3 3 yy/3 yy/3 yy/ 3 4 yy/4 et merci bcp
__________________
Ne pensez pas trop |
|
|
00
|
|
|
#20 | ||
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 925 ![]() |
Code :
|
||
|
00
|
Copyright © 2000-2012 - www.developpez.com