|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : mai 2012 Messages : 42 ![]() |
Bonjour,
j'ai une table de nvarchar et j'aimerais comparer dans un select : Code :
SELECT * FROM ALIMENT WHERE Sodium > 0,5 Merci d'avance. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : août 2009 Messages : 1 012 ![]() |
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 |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : mai 2012 Messages : 42 ![]() |
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?
|
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 12 074 ![]() |
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 :
SELECT * FROM ALIMENT WHERE Sodium > '0,5' A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#5 | ||
|
Invité régulier
![]() Inscription : mai 2012 Messages : 42 ![]() |
cette requete s'execute mais j'ai des problèmes de résultats incohérents:
Code :
|
||
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 12 074 ![]() |
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 Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
Copyright © 2000-2013 - www.developpez.com