Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/12/2010, 15h34   #1
Futur Membre du Club
 
Inscription : septembre 2008
Messages : 40
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 40
Points : 15
Points : 15
Par défaut Extraire une chaîne commençant par

Bonjour,

J'aimerais savoir, en SQL, comment faire une extraction d'une sous-chaîne qui commencerait soit par BDRJ soit par BDRH.
Pour l'instant, j'ai fait une bidouille avec un instr qui calcule la position du 'B', puis un autre instr qui calcule la position de l'espace qui suit ma sous-chaîne, et enfin je fais un substr à partir du 'B' sur une longueur = rés de l'instr de l'espace - rés de l'instr du 'B'.
Compliqué n'est-ce-pas ? Je suis sûr qu'il y a une solution plus simple.

Qqn a-t-il une idée ?

Merci.

David
David78180 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 15h39   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 968
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 968
Points : 18 200
Points : 18 200
Envoyer un message via MSN à CinePhil
Code :
1
2
WHERE la_colonne LIKE '%BDRH%'
  OR la_colonne LIKE '%BDRJ%'
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 15h40   #3
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 463
Points : 10 463
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Quel est votre SGBD (apparemment Oracle, c'est pour être sûr) ?
Avez-vous quelques exemples concrets pour illustrer votre besoin ?
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 15h45   #4
Futur Membre du Club
 
Inscription : septembre 2008
Messages : 40
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 40
Points : 15
Points : 15
Par défaut suite

Il s'agit d'Oracle.

Voilà par exemple le type de chaîne que j'ai :

BDR- BDRJBLUS session incidented - on server bdrprdap01

C'est donc la sous-chaîne BDRJBLUS que je voudrais extraire.
Mais comme je disais précédemment, la sous-chaîne pourrait très bien être BDRHBLUS à la place.
J'avais donc pensé aussi à utiliser un LIKE mais le souci c'est que ne veux pas extraire plus que BDRJBLUS (pas le reste de la chaîne).

C'est pourquoi j'avais pensé à SUBSTR et INSTR mais je n'arrive pas à les utiliser simplement :

select substr(summary,instr(summary,' ',1,1),instr(summary,' ',1,2) - instr(summary,' ',1,1))
David78180 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 16h56   #5
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 463
Points : 10 463
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Quelle version ? Les 10g+ permettent l'emploi des expressions régulières.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 17h00   #6
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808
Quelque chose comme ça si vous avez la 10g
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
Connected TO Oracle DATABASE 10g Enterprise Edition Release 10.2.0.4.0 
Connected AS mni
 
SQL> 
SQL> WITH DATA AS (
  2  SELECT 'BDR- BDRJBLUS session incidented - on server bdrprdap01' some_text FROM dual union ALL
  3  SELECT 'BDR- BDRHBLUS session incidented - on server bdrprdap01' some_text FROM dual union ALL
  4  SELECT 'another text' FROM dual
  5  )
  6  SELECT regexp_substr(some_text,'BDR(J|H)[[:alpha:]]*')
  7    FROM DATA
  8   WHERE regexp_like (some_text,'BDR(J|H)')
  9  /
 
REGEXP_SUBSTR(SOME_TEXT,'BDR(J
-------------------------------------------------------
BDRJBLUS
BDRHBLUS
 
SQL>
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 17h31   #7
Futur Membre du Club
 
Inscription : septembre 2008
Messages : 40
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 40
Points : 15
Points : 15
Par défaut MERCI

Merci pour votre réponse, c'est parfait !
Je vais à présent chercher à comprendre comment utiliser à fond les PATTERN.
C'est une bonne trouvaille.

Bonne soirée.
Je ferme la discussion.
David78180 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 17h50   #8
Futur Membre du Club
 
Inscription : septembre 2008
Messages : 40
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 40
Points : 15
Points : 15
Par défaut dernière question

et si mes sous-chaînes peuvent aussi se terminer par des chiffres ?
désolé mais je ne connaîs rien aux regular expressions.
je suis en train de regarder sur ce site qui m'a l'air très bien : http://www.sqlsnippets.com/en/topic-11741.html

néanmoins tte info est bonne à prendre !
David78180 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 18h04   #9
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 463
Points : 10 463
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
[[:alnum:]] au lieu de [[:alpha:]].

De manière générale, psoug est aussi une ressource sympathique.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 08h56   #10
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808
Citation:
Envoyé par David78180 Voir le message
...désolé mais je ne connaîs rien aux regular expressions.
...
Regular Expression Tutorial - Learn how to use regular expression
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h20.


 
 
 
 
Partenaires

Hébergement Web