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 :

real et decimal, soucis de sortie avec "," et "."


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    avril 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2009
    Messages : 32
    Points : 17
    Points
    17
    Par défaut real et decimal, soucis de sortie avec "," et "."
    Bonsoir, voilà un bout de code à coller dans management studio :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    create table test
    (
    col1 real,
    col2 decimal(10,3)
    )
     
    insert into test (col1, col2) values (123.65,56983.256)
     
    select * from test 
     
    drop table test
    La sortie donne un nombre avec une virgule pour le real (avec sa virgule flottante) et un nombre avec un point pour le decimal (avec sa virgule fixe).
    Et ce indépendamment des paramètres régionaux de ma machine ou de mon server (du Win Server 2008 R2 enterprise (paramétré en Français) avec du Sql Serveur 2008).
    Pour info dans le Sql Server 2000, les deux donnent des points.

    Sauriez vous pourquoi j'ai ce soucis ?
    et pourquoi c'est comme ça par défaut ?
    Et s'il y a un moyen de régulariser ça pour avoir soit un point soit une virgule ?

    C'est gênant car dans la BD sur laquelle je travail, j'ai du real et du numeric(x,y).
    De plus, en envoyant tout ça dans une commande en query par Bcp, le bousin me fait un convert auto en varchar par dessus et je me retrouve toujours avec des extractions avec des points au lieu des virgule quelque soit la valeur (, ou .) dans les paramètres régionaux des deux OS (client ou serveur).

    nb : L'utilisation du collate (avec la culture française) sur la requête ou sur chaque colonne de la requête ne change rien.
    nb : J'ai testé sans succès les fichiers de format avec BCP pour réaliser l'extraction sans conversion auto avec les types de mon choix, mais vu que ma vrai requête fait des jointures sur une dizaine de tables et que je ne souhaite pas en faire une vue (et de toute façon, ça rend encore moins bien qu'avec la conversion auto de bcp), ça n'est pas applicable.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    mai 2002
    Messages
    20 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 20 985
    Points : 49 809
    Points
    49 809
    Billets dans le blog
    1
    Par défaut
    C'est un bug lié à l'IHM SSMS... A faire remonter au support via CONNECT si ce n'est pas déjà fait...

    Je l'ai déjà rencontré dans mes présentations et en particulier hier en faisant une démo devant 100 personnes chez MS !!! (SQL Server days....)

    Pourriez vous me donner votre version de SQL Server avec la commande :
    SELECT @@VERSION
    et celui de SSMS avec le menu "Aide / A propos de" et utiliser le copier coller pour nous fournir les versions des outils clients.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    avril 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2009
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Bonjour, voilà les infos :

    SELECT @@VERSION :
    Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (X64) Apr 22 2011 19:23:43 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

    Infos SSMS :
    Microsoft SQL Server Management Studio 10.0.1600.22 ((SQL_PreRelease).080709-1414 )
    Outils clients Microsoft Analysis Services 2007.0100.1600.022 ((SQL_PreRelease).080709-1414 )
    Microsoft Data Access Components (MDAC) 6.1.7601.17514 (win7sp1_rtm.101119-1850)
    Microsoft MSXML 3.0 4.0 5.0 6.0
    Microsoft Internet Explorer 8.0.7601.17514
    Microsoft .NET Framework 2.0.50727.5448
    Système d'exploitation 6.1.7601

    Le serveur surlequel tourne SQL Server 2008 est un Windows Server 2008 R2 Entreprise avec le Pack 1.

    Et la version de BCP est la suivante :

    ps : Au niveau de BCP, connaissez vous un moyen pour qu'il exporte les données de type decimal ou real avec une virgule au lieu d'un point (lors de sa conversion auto en varchar) dans le fichier d'extraction ?


    Merci d'avance.

  4. #4
    Membre émérite

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : mars 2010
    Messages : 1 278
    Points : 2 797
    Points
    2 797
    Par défaut
    Citation Envoyé par uluquiorra Voir le message
    Bonjour, voilà les infos :
    ps : Au niveau de BCP, connaissez vous un moyen pour qu'il exporte les données de type decimal ou real avec une virgule au lieu d'un point (lors de sa conversion auto en varchar) dans le fichier d'extraction ?
    Merci d'avance.
    une méthode de contournement : utilisation de la fonction REPLACE

    --> Pour avoir des virgules partout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT replace(cast(col1 as numeric(10,3)),'.',',') col1, replace(cast(col2 as numeric(10,3)),'.',',')col2 FROM maBase.dbo.test
    --> Pour avoir des points partout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT replace(cast(col1 as numeric(10,3)),',','.') col1, replace(cast(col2 as numeric(10,3)),',','.')col2 FROM maBase.dbo.test
    --> Pour bcp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bcp "SELECT replace(cast(col1 as numeric(10,3)),'.',','), replace(cast(col2 as numeric(10,3)),'.',',') FROM maBase.dbo.test" QUERYOUT "C:\testbcp.txt" -c -S "InstanceServeurSQL" -T
    Etienne ZINZINDOHOUE
    Billets-Articles

Discussions similaires

  1. Souci de compilation avec des gros projets avec BC5++
    Par SOPRA-Eherve dans le forum C++Builder
    Réponses: 7
    Dernier message: 10/05/2006, 22h23
  2. Souci de conversion avec XMLHttpRequest
    Par Christophe Charron dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/03/2006, 14h19
  3. Souci pour désarchiver avec cpio
    Par vbcasimir dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 24/02/2006, 10h09
  4. Formulaires : problème avec les slashes et les quotes
    Par GarGamel55 dans le forum Langage
    Réponses: 1
    Dernier message: 12/10/2005, 16h59
  5. C++, intercepter les sorties avec les raw sockets
    Par ThibG dans le forum Développement
    Réponses: 6
    Dernier message: 08/08/2005, 11h44

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