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

Requêtes PostgreSQL Discussion :

Recherche champs d'une table contenant données en minuscules


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 74
    Points : 40
    Points
    40
    Par défaut Recherche champs d'une table contenant données en minuscules
    Bonjour,
    Comme le dit le titre, je cherche tous les champs de ma table contenant des minuscules. En farfouillant sur Internet, j'ai réussi à bricoler à partir de deux ou trois bouts de code une requête qui me permet d'obtenir la liste de toutes les colonnes de ma base (= toutes les colonnes de toutes les tables) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT 
    	COLUMN_NAME 
    FROM 
    	INFORMATION_SCHEMA.COLUMNS 
    WHERE
    	TABLE_NAME IN (SELECT tablename FROM pg_tables WHERE schemaname LIKE 'public') ;

    Si j'avais à faire le travail sur une colonne d'une table donnée, j'essaierais d'utiliser cette petites astuce qui consiste à tester en passant en majuscules grâce à ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT * FROM my_table 
    WHERE UPPER(some_field) != some_field ;
    Mais avant d'en arriver là, je bloque parce que je ne sais pas comment tester le contenu de chaque colonne grâce aux résultats de ma requête initiale donnant tous les champs...

    Qui peut m'aider à continuer ?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 74
    Points : 40
    Points
    40
    Par défaut
    Comme je vois que ça n'inspire pas trop les foules, je rapporte mes réflexions sur le sujet...

    En gros, je peux obtenir la liste des couples (nom de la table, nom de colonne) pour les colonnes de type chaîne de caractères, et ce que j'aimerais est pouvoir transformer ces données en noms de table et de colonne dans une autre requête.

    Pour obtenir le résultat final (savoir quelles colonnes contiennent des minuscules), il me suffit de compter le nombre de lignes pour chaque colonne contenant des minuscules et de ne garder que celles qui sont >0.
    Voici donc le squelette de ce que j'aimerais obtenir :

    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
    16
     
    SELECT 
    	COUNT(*)
    FROM
    	(SELECT 
    		table_name as "tab",
    		column_name as "col"
    	FROM 
    		INFORMATION_SCHEMA.COLUMNS 
    	WHERE
    		TABLE_NAME IN (SELECT tablename FROM pg_tables WHERE schemaname LIKE 'public')
    		AND data_type LIKE 'character varying') 
           AS "T"
    WHERE
     	ICI : comment utiliser les informations tab et col de façon "dynamique" pour tester avec UPPER(col) != col
    ;
    Bien entendu, il se peut que la requête imbriquée ne soit pas placée au bon endroit car pour l'instant, elle génère les données statiques et non pas des noms de table et colonne...

    Merci pour toute idée !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 74
    Points : 40
    Points
    40
    Par défaut
    Je n'ai pas résolu la question et je n'ai reçu aucune suggestion. J'ai contourné le problème en regardant un extrait de chaque table une à une (fonction "Afficher les 100 premières lignes" de PGAdmin).

    Je marque "Résolu" parce qu'il n'y a visiblement pas de bouton "Abandon" .

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 134
    Points : 38 557
    Points
    38 557
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Je ne vois qu'une solution à votre besoin, c'est de faire l'extraction des colonnes telle que vous l'avez faite, puis de construire une requête en SQL dynamique qui exploite ce résultat.

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

Discussions similaires

  1. [AC-2010] Insérer dans un champ d'une table des données à partir de requete count
    Par freeman3869 dans le forum VBA Access
    Réponses: 1
    Dernier message: 12/06/2015, 21h39
  2. Afficher les tables et champs d'une base de données
    Par sovo dans le forum Vos contributions VB6
    Réponses: 4
    Dernier message: 21/02/2008, 14h40
  3. [SQL Server] rechercher dans plusieurs champs d'une table
    Par houla! dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/08/2006, 09h37
  4. Réponses: 2
    Dernier message: 28/06/2006, 20h34
  5. Réponses: 2
    Dernier message: 07/11/2005, 18h54

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