Bonjour à tous,
J'utilise SQL Developper et SQL PLUS.
Je dois analyser une colonne number sans précision pour savoir si dans les enregistrement il y a au moins une données qui possède des virgules.
Dans ce cas, j'extrais longueur maximal de la partie entière et de la partie décimale des données.
Si aucun enregistrement ne possède de décimale alors je retourne uniquement la longueur max de la partie entière.
Voici où j'en, suis :
Ci-dessous les données de ma table test1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT max(Length(SUBSTR(ID_PROSP ,1,INSTR(ID_PROSP ,',')-1))) max1, max(Length(SUBSTR(ID_PROSP ,INSTR( ID_PROSP ,',')+1))) max2 FROM TEST1 WHERE rownum < 100 ;
0,11
2578578
0.698
1.3
Résultat de ma requête :
max1 ; max2
1 ; 7
Alors que j'aimerais obtenir :
max1 ; max2
7 ; 3
J'ai pensé à faire deux requêtes.
Une qui recherche recherche les virgules et une autre si il n'y a pas de virgule
Mais c'est pour appliquer sur des tables contenant plus de 100 000 enregistrements. Je suis embeté de devoir analyser deux fois la colonne. C'est pas trés optimisé.
Comment dois-je modifier ma requête pour obtenir le résultat souhaité ?
Pouvez-vous me mettre sur la voie ?
Merci par avance à tous.
Cordialement,
Thierry.
Comment dois-je modifier ma requête ?
Partager