1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    décembre 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2010
    Messages : 62
    Points : 34
    Points
    34

    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    décembre 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2010
    Messages : 62
    Points : 34
    Points
    34

    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 !

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