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

PostgreSQL Discussion :

Requête insensible à la casse


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 149
    Par défaut Requête insensible à la casse
    Bonjour,
    peut on désactiver la sensibilité à la casse des requêtes? Par exemple:

    Ne fonctionnera pas si le champ est "Id" dans la base de donnée.
    Or on m'a donné une base ou les champs sont écrit aléatoirement avec des majuscules ou sans ... c'est énervant.

  2. #2
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Essaie en mettant des guillements autour des noms de champs et tables, mais ça risque vite de devenir très lourd
    Sinon, renomme tous les champs et/ou tables impactées pour conserver une norme que tu respecteras : tout en minuscules ou tout en majuscules
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 149
    Par défaut
    Exact, c'est très lourd et c'est ce que je voulais éviter.
    Si il n'y a vraiment pas d'autres moyens, je renommerais mais je voulais aussi éviter ça car j'ai deux tables de 158 colonnes, et c'est également lourd de les renommer toutes les deux manuellement.

  4. #4
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Tu peux générer dynamiquement les commandes sql à lancer
    Suffit de faire une requête qui parcourt la vue du dictionnaire listant les colonnes, un truc du genre

    SELECT 'alter table '||nomschema||'.'||nomtable||' rename '||nomcolonne||' to '||lower(nomcolonne)||';' from vue_pour_colonnes where nomcolonne <> lower (nomcolonne)

    Comme ça tu obtiens le script à lancer

    En tous les cas, avoir une base avec tous les noms d'objets (tables, colonnes, indexes, ...) en minuscules (ou tout en majuscules) est la solution la plus propre, plutôt que d'aller mettre des guillemets partout
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 149
    Par défaut
    Ca fait un peu boulet mais je n'ai pas compris comment fonctionne la requête, est ce que tu peux expliquer ?

  6. #6
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Quelle version de Postgresql as-tu ?
    Si dans la vue pg_attribute, les noms de colonnes sont bien en majuscules et/ou minuscules selon les cas, essaie un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select 'alter table '||a.schemaname||'.'||a.relname||' rename '||b.attname||' to  '||lower(b.attname)||';'
    from pg_stat_user_tables a, pg_attribute b
    where a.relid = b.attrelid
    and b.attname <> lower(b.attname);
    et lance les commandes résultantes, c'est beaucoup plus rapide que de renommer manuellement chaque colonne
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

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

Discussions similaires

  1. requête insensible à la casse
    Par oh_yeah dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/01/2013, 18h36
  2. Rendre requête insensible à la casse
    Par pierrot67 dans le forum Bases de données
    Réponses: 4
    Dernier message: 21/02/2007, 19h53
  3. SQL champ texte UNIQUE insensible à la casse
    Par Mike@Nestor dans le forum Langage SQL
    Réponses: 8
    Dernier message: 17/10/2005, 09h31
  4. Recherche insensible à la casse ET insensible aux accents.
    Par Bernard Grosdoy dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 10/07/2005, 04h32
  5. Tri insensible à la casse [IB7]
    Par patquoi dans le forum Débuter
    Réponses: 4
    Dernier message: 02/06/2003, 09h56

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