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

MS SQL Server Discussion :

SQL Server 2005 : obtenir une chaîne vide au lieu des NULL dans un jeu de résultat au format texte


Sujet :

MS SQL Server

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut SQL Server 2005 : obtenir une chaîne vide au lieu des NULL dans un jeu de résultat au format texte
    Bonjour à tous,

    j'ai un problème assez basique mais auquel je ne trouve pas de solution simple suite à passage de SQL Server 2000 à 2005 :

    J'ai une requête complexe dont l'exécution dure plusieurs heures et alimente une grosses table décisionnelle destinée à être exportée sous EXCEL.
    Dans cette table, un certain nombre de colonnes peuvent être retournées à NULL par la requête.

    Lorsque j'était sous 2000, le résultat restitué au format texte sous l'analyseur de requête me ramenait des chaînes vides au lieu de la valeur explicite 'NULL'. Je faisais un copier/coller de tout ça dans EXCEL et basta !

    Depuis que je suis en 2005, le comportement est différent puisque j'ai systématiquement 'NULL' dans mes résultats et le même 'NULL' à l'arrivée dans EXCEL. J'ai essayé de faire un chercher/remplacer sous EXCEL mais le nombre trop important de données fait que ça n'aboutit pas (idem sous Notepad++) !

    Je cherche à revenir au comportement de 2000 sur ce cas de figure. Y-a-t-il une simple option pour y parvenir (si oui, laquelle ?) ou suis-je condamné à revoir l'écriture de la requête (de la mort) pour virer mes 'NULL' à l'arrivée?

    Merci de votre aide !!

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    J'ai une requête complexe dont l'exécution dure plusieurs heures et alimente une grosses table décisionnelle destinée à être exportée sous EXCEL.
    SQL Server Integration Services est tout à fait à même de faire cela pour vous.
    Un rapport sous SQL Server Reporting Services vous permettrait probablement de vous passer de ce fastidieux copier-coller, d'autant qu'on peut exporter un rapport sous Excel

    Je cherche à revenir au comportement de 2000 sur ce cas de figure. Y-a-t-il une simple option pour y parvenir (si oui, laquelle ?) ou suis-je condamné à revoir l'écriture de la requête (de la mort) pour virer mes 'NULL' à l'arrivée?
    Vous devez changer la liste des colonnes du SELECT en utilisant la fonction ISNULL() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT	ISNULL(maColonne, '') AS maColonne
    Pour le "de la mort", et étant donné que la requête semble requérir un temps d'exécution long, je suppose que :

    - soit votre modèle est mauvais,
    - soit que les colonnes sur lesquelles vous filtrez ne sont pas proprement indexées
    - soit que votre requête est du type "spaghetti"

    @++

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci Nicolas,

    le modèle de la base est éprouvé, les tables indexées comme il se doit et on est au taquet pour ce qui concerne l'optimisation je pense. Le "de la mort" correspond plutôt à une multitude de calculs intermédiaires assez incompressibles.

    Il est évident cependant que des améliorations du type mise en oeuvre sous SQL Server Integration Services seraient à recommander.

    Je cherchais juste (dans l'esprit artisanal dans lequel nous avons l'habitude de travailler, même si, certes, ce n'est pas la panacée) un "truc" qui permette d'obtenir directement au format texte dans l'analyseur les résultats de ma requête sans que "NULL" s'affiche explicitement à l'image de ce qui se passait sous 2000.

    Quoi qu'il en soit merci beaucoup!

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    le modèle de la base est éprouvé, les tables indexées comme il se doit et on est au taquet pour ce qui concerne l'optimisation je pense
    Si une revue des requêtes ont un temps d'exécution un peu long et/ou qui lisent un peu trop de pages est effectuée régulièrement, alors je veux bien te croire

    Le "de la mort" correspond plutôt à une multitude de calculs intermédiaires assez incompressibles.
    Cela n'indique pas de quelle nature ils sont, et si par exemple on pourrait les faire exécuter à une application ou à un objet d'assembly.

    Je cherchais juste (dans l'esprit artisanal dans lequel nous avons l'habitude de travailler, même si, certes, ce n'est pas la panacée) un "truc" qui permette d'obtenir directement au format texte dans l'analyseur les résultats de ma requête sans que "NULL" s'affiche explicitement à l'image de ce qui se passait sous 2000.
    Il est vrai qu'on ne peut pas dire que l'interfaçage entre Office et SQL Server soit du meilleur acabit ...

    @++

  5. #5
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Bonjour à tous,

    j'ai un problème assez basique mais auquel je ne trouve pas de solution simple suite à passage de SQL Server 2000 à 2005 :

    J'ai une requête complexe dont l'exécution dure plusieurs heures et alimente une grosses table décisionnelle destinée à être exportée sous EXCEL.
    Dans cette table, un certain nombre de colonnes peuvent être retournées à NULL par la requête.

    Lorsque j'était sous 2000, le résultat restitué au format texte sous l'analyseur de requête me ramenait des chaînes vides au lieu de la valeur explicite 'NULL'. Je faisais un copier/coller de tout ça dans EXCEL et basta !

    Depuis que je suis en 2005, le comportement est différent puisque j'ai systématiquement 'NULL' dans mes résultats et le même 'NULL' à l'arrivée dans EXCEL. J'ai essayé de faire un chercher/remplacer sous EXCEL mais le nombre trop important de données fait que ça n'aboutit pas (idem sous Notepad++) !

    Je cherche à revenir au comportement de 2000 sur ce cas de figure. Y-a-t-il une simple option pour y parvenir (si oui, laquelle ?) ou suis-je condamné à revoir l'écriture de la requête (de la mort) pour virer mes 'NULL' à l'arrivée?

    Merci de votre aide !!
    Et avec le module d'export de SSMS?
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Citation Envoyé par iberserk
    Et avec le module d'export de SSMS?
    L'idée est bonne mais l'outil n'est pas d'une fiabilité extraordinaire.
    A tester

    @++

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/05/2007, 13h48
  2. Réponses: 2
    Dernier message: 10/05/2007, 10h16
  3. [SQL SERVER 2005] Exporter une table en Access
    Par Golzinne dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/03/2007, 17h08
  4. [SQL SERVER 2005] Ouvrir une table en exclusif
    Par olbi dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 02/03/2007, 18h58
  5. [SQL SERVER 2005] Renvoyer une valeur
    Par diaboloche dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/02/2007, 11h18

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