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 :

SELECT de toutes les colonnes sauf une [12c]


Sujet :

SQL Oracle

  1. #1
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut SELECT de toutes les colonnes sauf une
    Salut,

    Je ne sais plus si j'avais posé la question donc, dans le doute, rebelote, au cas où une 18 ou 19c incorporerait cette feature

    Est-il possible sous Oracle, en SQL, de faire un SELECT * en excluant une ou des colonnes?
    Par exemple j'ai une table de 50 colonnes et je ne veux pas sélectionner les deux colonnes col32 et col 33 (trop grosses par exemple) : en outre je ne veux pas taper le nom des 48 colonnes (trop fatiguant pour un informaticien ).

    Le code ressemblerait à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * - col32 - col 33 FROM table_test;
    Je pourrais faire une boucle en pl/sql sur DBA_TAB_COLS mais là on sort l'artillerie lourde...


    Bonne journée

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Par défaut
    Pas à ma connaissance (qui reste limitée)
    De tout façon les étoiles, c'est le mal

  3. #3
    Membre très actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2014
    Messages : 260
    Par défaut
    Bonjour,

    Si tu as envie de t'amuser... Y'a toujours la solution du script bourrin tant apprécié.

    Tu fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT listagg columns_name INTO ListColonne FROM all_tab_cols WHERE table_name = '' and colunm_name not in ('', '')
    Puis un petit SQL dynamique qui fait le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ListColonne FROM matable
    et let's go

    (Dans le listagg, tu mets bien le séparateur en temps que virgule)

    Tu peux même en faire une procédure ou une fonction histoire d'avoir le nom de table que tu veux select et le nom des colonnes que tu veux pas voir en paramètre

    A voir après si ca vaut le coup de s'amuser à faire ça...

    Sinon à ma connaissance, pas possible, désolé

    Bisous

  4. #4
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Si l'outil utilisé est sql*plus, on peut masquer les colonnes souhaitées avec NOPRINT.
    Ici, on empêche l'affichage de la colonne SAL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    COL SAL NOPRINT
    SELECT * FROM SCOTT.EMP;
    COL SAL CLEAR
    SELECT * FROM SCOTT.EMP;

  5. #5
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Et dans les nouveautés amusantes, en 18c on a les fonctions de table polymorphes qui peuvent être exploitées pour votre usage.

    Par exemple, dans la section REMOVE COLUMNS de cette page (faire CTRL F) :
    https://oracle-base.com/articles/18c...-functions-18c

  6. #6
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Et dans SQL Developer (et sans doute de nombreux autres outils), quand on fait glisser une table depuis l'explorateur d'objets vers la zone de saisie des requêtes, le glissement peut générer un SELECT avec la liste de toutes les colonnes. Il suffit alors de retirer celles dont on ne veut pas.

  7. #7
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Merci à tous pour vos réponses

    Je pense qu'effectivement j'avais déjà posé cette question ici car j'ai retrouvé dans mes archives la solution NOPRINT.
    En voici une autre qu'on m'avait dit, plus brutale selon la taille de la table mais bon, c'est une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE TABLE TTEMP AS SELECT * FROM TAB1 ;
    ALTER TABLE TTEMP DROP COLUMN COL_DEL;
    SELECT * FROM TTEMP;
    DROP TABLE TTEMP;
    Pomalaix, je vais voir ce que sont ces fonctions de tables polymorphes : j'espère que j'aurais moins mal à la tête qu'avec la clause MODEL

  8. #8
    Membre Expert
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 942
    Par défaut
    Bonjour,

    Si je comprends le besoin c'est d'écrire rapidement un select d'une table de 50 colonnes ou plus.
    ...
    Une table de 50 colonnes

    Le problème semble plus provenir de la conception que de l'outil.

  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
    50 colonnes.. ça va c'est pas beaucoup
    La conception ou le métier peut parfois nécessiter des grosses tables, ou aussi des colonnes "inutiles" car Oracle ne permet de faire des contraintes référentielles que sur des colonnes (pas de données fixes)

  10. #10
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Il y a également beaucoup d'algorithmes en datascience qui nécessitent d'avoir des données pivotées (et avec du volume il vaut mieux les pivoter dans la base que sur son poste en R), générant de facto beaucoup de colonnes, et parfois on a besoin d'en retirer des colonnes purement techniques.

    /digression hors Oracle

    Comme c'est un besoin réel qu'on croise de plus en plus, Teradata a développé une fonction "newSQL" AntiSelect
    https://docs.teradata.com/reader/CWV...YMayfnD1FcrIMQ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select t.*
      from Antiselect(ON table_test USING Exclude ('col32')) as t;
    /fin de digression

  11. #11
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Cool le ANTISELECT

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

Discussions similaires

  1. Sélectionner toutes les colonnes sauf une.
    Par pedro99 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 23/05/2009, 17h21
  2. Afficher toutes les colonnes d'une Datatable
    Par enjoy dans le forum JSF
    Réponses: 7
    Dernier message: 01/02/2007, 14h57
  3. Réponses: 6
    Dernier message: 01/08/2006, 18h12
  4. Imprimer toutes les colonnes sur une même feuille
    Par Soulghard dans le forum Access
    Réponses: 1
    Dernier message: 02/02/2006, 12h10
  5. Toutes les colonnes d'une BDD
    Par mohamed dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/09/2004, 14h12

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