Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
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 07/02/2012, 01h57   #1
 
Inscription : janvier 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 8
Points : -3
Points : -3
Par défaut Séparation des numériques et alphanumérique

Bonjour tout le monde,

J’ai trois tables T1, T2, T3
Ma table T1 contient des enregistrements, je veux séparer les données de la table T1 dans T2 et T3.
T1 : c1 varchar2, c2 varchar2
T2 et T3 ont la même structure que T1, mon problème est :
Le champ C2 contient des numérique et alphanumériques, je veux insérer les enregistrements avec les numériques dans la table T2 et alphanumérique dans la table T3
Ex :
Code :
1
2
3
4
C1             C2
------    ----------
100         1234567
200         465zxy2
canalg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 09h36   #2
Membre expérimenté
 
François
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : François

Informations forums :
Inscription : février 2010
Messages : 306
Points : 537
Points : 537
Bonjour,

Vous pouvez faire une petite fonction PLSQL qui renvoie 1 quand elle a un champ numerique en entree, et 0 sinon. Puis inserer dans T2 quand le resultat c'est 1, et dans T3 quand le resultat est 0.

Code :
1
2
3
4
CREATE OR REPLACE FUNCTION ma_function (champ2 varchar2) RETURN number IS [blabla] end;
/
 
INSERT INTO T2 SELECT * FROM T1 WHERE ma_function(T1.champ2)=1;
Rams7s est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/02/2012, 09h52   #3
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

Informations professionnelles :
Activité : Chef de projet
Secteur : Bâtiment

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
Ou utiliser REGEXP
Pour avoir les champs qui ne contiennent pas de catactéres alpha
Code :
1
2
3
4
5
6
7
8
9
10
 
SELECT *
  FROM (SELECT 'abdc123' C1 FROM DUAL
        UNION ALL
        SELECT '-123' FROM DUAL
        UNION ALL
        SELECT '456abdc123' C1 FROM DUAL
        UNION ALL
        SELECT 'abc' FROM DUAL)
 WHERE REGEXP_INSTR (c1, '[[:alpha:]]') = 0
__________________
Garuda गरूड
Brahmâ la Guerre et Vishnu la Paix

Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010
Garuda est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/02/2012, 10h16   #4
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 448
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 448
Points : 4 192
Points : 4 192
Avec ltrim
Code :
1
2
3
4
5
6
7
8
9
10
SELECT *
  FROM (SELECT 'abdc123' C1 FROM DUAL
        UNION ALL
        SELECT '123' FROM DUAL
        UNION ALL
        SELECT '456abdc123' C1 FROM DUAL
        UNION ALL
        SELECT 'abc' FROM DUAL)
 WHERE LTRIM(c1, '0123456789') IS NULL -- que numérique
 WHERE LTRIM(c1, '0123456789') IS NOT NULL -- Alphanum
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/02/2012, 13h29   #5
 
Inscription : janvier 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 8
Points : -3
Points : -3
Bonjour a tous,
Merci beaucoup pour les solutions, ca marche très bien.
canalg 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 18h35.


 
 
 
 
Partenaires

Hébergement Web