IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

requete select sur type


Sujet :

SQL Oracle

  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 38
    Par défaut requete select sur type
    bonjour,
    comment faire une requête select sur une table afin qu'elle m'affiche un résultat filtré sur le type des données (type numeric par exemple)?

    exemple:
    soit une table contenant 1 seul champ id et dont les enregistrements sont de type varchar2 mais dont certaines valeur sont '1', '3'... donc numérique.
    ma requête:
    select id from essai where type=numeric;

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 13
    Par défaut Type numérique
    bonjour,

    comme tu as un mélange de valeures numériques stockées en varchar2 (donc textuelle)... tu dois passer par une fonction plsql.

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    create function is_numeric(str in varchar2) return number is
      v_number number(38);
    begin
      v_number := to_number(str);
      return 1;
     
    exception when value_error then
     
        return 0;
     
    end is_numeric;
    /
    puis tu l'utilise dans ta requête:

    select id from essai where 1=is_numeric(id);

  3. #3
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 38
    Par défaut
    non en fai je dois créer un script SQL qui ordonne les lignes de la table numériquement en utilisant les "character functions";

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    As-tu au moins essayé ce qu'il te propose ?

  5. #5
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 5 611
    Par défaut
    Citation Envoyé par orafrance Voir le message
    As-tu au moins essayé ce qu'il te propose ?
    Ca ne va pas l'aider par rapport à son besoin! Probablement que ce qu'il a besoin c'est tout simplement d'utiliser LPAD pour faire un tri correctement

  6. #6
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    pourtant, j'ai du mal à voir la différence entre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select id from essai where type=numeric;
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select id from essai where 1=is_numeric(id);

  7. #7
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Une autre idée, sans créer de fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SQL> select * from t1;
    A
    -
    1
    a
    2
    b
    3
     
    SQL> select * from t1 where translate (a, 'a1234567890', 'a') is null;
    A
    -
    1
    2
    3

  8. #8
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 5 611
    Par défaut
    Citation Envoyé par orafrance Voir le message
    pourtant, j'ai du mal à voir la différence entre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select id from essai where type=numeric;
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select id from essai where 1=is_numeric(id);
    Je pense que quand il dit
    non en fai je dois créer un script SQL qui ordonne les lignes de la table numériquement en utilisant les "character functions";
    Il a besoin en fait de faire de tel sorte que pour les valeurs '1', '10', '2', '22', 'TOTO' il doit les obtenir dans l'ordre '1', '2', '10', '22', 'TOTO'. Peut être je me trompe mais si ce n'est pas le cas, la question a été aussi trés mal formulée.

  9. #9
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    dans ce cas, il peut faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY LPAD(champ, 10, '0')
    Avec 10 = taille max du champ

  10. #10
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    select id 
    from essai 
    where 
      cast(
        xmlquery(
        'let $i:=if($ID castable as xs:decimal)then "YES" else "NO" return $i' 
        passing id as id returning content) 
      as varchar2(3))='YES';
    ID
    ----------
    1
    ce n'est sûrememt pas le moyen le plus simple ni le plus rapide

  11. #11
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 38
    Par défaut
    merci plaineR , en effet c'est ce que je souhaite faire et ça marche!!

  12. #12
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Citation Envoyé par laurentschneider Voir le message
    ce n'est sûrememt pas le moyen le plus simple ni le plus rapide


    c'est beau en tout cas

  13. #13
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 38
    Par défaut
    comment faire si certains enregistrement sont du genre "1-A","3B"..etc ?
    en utilisant la méthode de plaineR :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM t1 WHERE translate (a, 'a1234567890', 'a') IS NULL order by 1;

  14. #14
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Citation Envoyé par bb5477 Voir le message
    comment faire si certains enregistrement sont du genre "1-A","3B"..etc ?
    Comme elles ne sont pas numériques elles ne seront pas ramenées. C'est ce que tu veux non ?

  15. #15
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    par contre ça ne marche qu'avec les entiers

  16. #16
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 38
    Par défaut
    ok pour les valeurs numériques avec translate.. cependant je ne parviens toujours pas à trouver une solution dès que ce ne sont plus des valeurs numériques

    *comment faire pour trier, à partir de cette même table, les valeurs qui ne sont pas numérique?

    *comment trier la table complète (valeur numérique et non numérique mais toutes de type varchar2) ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requete select sur 2 tables
    Par beho dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/02/2007, 15h19
  2. Requete Selection Sur Date
    Par otaquet dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 28/11/2006, 11h57
  3. requete selection sur date
    Par otaquet dans le forum Access
    Réponses: 24
    Dernier message: 25/10/2006, 10h36
  4. requete SQL sur Typed DataSet, sans utiliser SQL serveur
    Par Harry_polin dans le forum Accès aux données
    Réponses: 2
    Dernier message: 06/10/2006, 19h15
  5. Requete SELECT SUR +sieurs tables
    Par yanis97 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 21/09/2006, 13h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo