|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : novembre 2005 Messages : 90 ![]() |
bonjour
dans ma table, j'ai 2 champs ("datesortie" et "volumesorti") qui peuvent prendre des valeurs nulles. je veux construire une requête (avec la fonction "IIF") dans laquelle le champ "datesortie" prennent la valeur "01/01/1900" lorsqu'il est nul et le champ "volumesorti" la valeur "0" lorsqu'il est nul aussi. |
|
|
01
|
|
|
#2 |
|
Futur Membre du Club
![]() Inscription : novembre 2005 Messages : 90 ![]() |
lorsque je fais la requête
Code :
SELECT IIF(IsNull(DateSortie,True),'1900-01-01',DateSortie),IIF(IsNull(VolumeSorti,True),0,VolumeSorti) FROM TABLE |
|
|
00
|
|
|
#4 |
|
Futur Membre du Club
![]() Inscription : novembre 2005 Messages : 90 ![]() |
autant pour moi. IIF n'existe pas en SQL Server.
il fallait plutot faire Code :
SELECT case when datesortie IS NULL then '1900-01-01' else datesortie end AS DS,case when volumesorti IS NULL then 0 else volumesorti end AS VS FROM TABLE |
|
|
00
|
|
|
#5 | ||
![]() ![]() Administrateur de base de données Inscription : août 2007 Messages : 1 159 ![]() |
Ou avec les fonctions proposees ci dessus:
Code :
|
||
|
|
00
|
|
|
#6 |
|
Futur Membre du Club
![]() Inscription : novembre 2005 Messages : 90 ![]() |
un autre problème se pose par la suite et j'ai pas trouvé nécessaire d'ouvrir une autre discussion
voilà: je veux filtrer par date de sortie: Code :
SELECT datesortie,volumesorti FROM TABLE WHERE (datesortie BETWEEN '2011-01-01' AND '2012-02-06') j'espère avoir bien exposé mes préoccupation |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() |
Noter que la fonction ISNULL n'est pas une fonction standard SQL. c'est un bidouillage de MS pour SQL SERVER. Cette fonction dans certaine condition renvoie des résultats erronés !
Dans votre cas utiliser plutôt la fonction CASE. Noter aussi que : -->la fonction COALESCE est un cas particulier de CASE --> COALESCE fait partie de la norme SQL et il est plus fiable et plus flexible que ISNULL. --> la fonction NULLIF prévue par la norme SQL est aussi un cas particulier de CASE |
|
00
|
|
|
#8 | ||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 674 ![]() |
Bonjour,
Citation:
Citation:
Et de toute façon, comme le dit zinzineti : - ça ne fait pas partie de la norme SQL; c'et une adaptation de VB (qui est une langage que je déteste, mais pas autant que COBOL - c'est de la bidouille @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||
|
00
|
Copyright © 2000-2012 - www.developpez.com