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

Langage SQL Discussion :

Comparer des nvarchar


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 228
    Points : 80
    Points
    80
    Par défaut Comparer des nvarchar
    Bonjour,
    j'ai une table de nvarchar et j'aimerais comparer dans un select :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM ALIMENT WHERE Sodium > 0,5
    Évidemment ça ne marche pas, je dois réécrire la base ou il y a une requête miracle qui permet d'éviter cela ?
    Merci d'avance.

  2. #2
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Il faudrait être un peu plus précis (SGBDR, infos sur la table), mais a priori votre problème c'est que la colonne "Sodium" de votre table "Aliment" est en nvarchar au lieu d'être un gentil nombre ?
    Le mieux c'est de toute façon de modifier le modèle - ça peut avoir des impacts sur des programmes appelants (s'ils sont mal faits), mais ça vous évitera à terme bien des soucis (comme d'avoir des formats différents, voire des valeurs qui ne sont pas des nombres).

    Ensuite, si ce n'est pas possible pour une raison ou une autre, selon le SGBD, il faut faire de la conversion à la volée Avec bien sûr le risque d'erreur si quelqu'un a rentré 'Trop' dans la colonne Sodium

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 228
    Points : 80
    Points
    80
    Par défaut
    Il n'y a pas de sgbd, je fais le tout en c# par les sqlCEServer. Je vais tenter les conversions à la volée, c'est possible en sql pure?

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 770
    Points : 52 723
    Points
    52 723
    Billets dans le blog
    5
    Par défaut
    SQL est un langage fortement typé ! On est pas sous Excel !!!

    Vous essayer de comparer du texte avec un nombre, en sus mal écrit.

    Un nombre bien écrit ce serait 0.5 et non 0,5 (point et pas virgule).

    Cependant vous me dites avoir des nvarchar... C'est à dire des chaînes de caractères. Il faut donc comparer une chaine de caractères à une autre chaine de caractères !

    Autrement dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM ALIMENT WHERE Sodium > '0,5'
    Commencez par apprendre SQL. Mon bouquin, comme mon site web peuvent vous y aider !

    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/ * * * * *

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 228
    Points : 80
    Points
    80
    Par défaut
    cette requete s'execute mais j'ai des problèmes de résultats incohérents:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT     *
    FROM            Aliment
    WHERE        (Sodium > '130')
    Me donne des sodiums < 130...

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 770
    Points : 52 723
    Points
    52 723
    Billets dans le blog
    5
    Par défaut
    C'est normal, vous comparez des chaines de caractères à des chaines de caractères. Si vous voulez comparez des nombre il aurait fallut les stocker avec une colonne de type FLOAT !

    On ne vous a pas appris à l'école qu'on ne devait pas mélanger les choux et les carottes ?

    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/ * * * * *

Discussions similaires

  1. comparer des champs date time
    Par HULK dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 25/01/2005, 14h02
  2. [Date] Comparer des dates au format mySQL "date
    Par Marc_P dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 25/10/2004, 15h15
  3. comparer des sons
    Par heidi79 dans le forum DirectX
    Réponses: 2
    Dernier message: 12/08/2003, 01h18
  4. [LG][FAQ]comparer des fichiers
    Par lucke dans le forum Langage
    Réponses: 11
    Dernier message: 01/06/2003, 18h02
  5. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 22h37

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