La colonne occurrence_limit
est le type de données money,
Si c'est NULL
je veux juste une chaîne vide ( ''
), mais cela donne me 0.00
.
ISNULL(occurrence_limit,'') as occurrence_limit
Comment puis-je simplement avoir ''
au lieu de 0.00
?
3 Réponses :
Comme d'autres l'ont dit, ne le faites pas. Mais si vous avez besoin de:
SELECT ISNULL(CONVERT(VARCHAR(9), occurrence_limit), '') AS occurrence_limit
Juste pour expliquer pourquoi c'est mauvais: c'est que les valeurs ne sont plus numériques. Pour des choses importantes, comme l'argent, c'est un problème. '100'
est inférieur à '2'
, par exemple, et '17' + '2'
est '172'
.
DROP table #testStak create table #testStak(nombre varchar(50),moneycant money) INSERT INTO #testStak VALUES ('ALFA',10) INSERT INTO #testStak VALUES ('BETA',NULL) INSERT INTO #testStak VALUES ('GAMMA',5000) SELECT nombre,ISNULL(CAST(moneycant AS varchar),'') FROM #testStak
Non lié à la question
en fait, c'est une forme pour mettre un espace vide au lieu de 0,00 dans une colonne d'argent.
Essayez ceci:
SELECT ISNULL(NULLIF(occurrence_limit, 0),'') as occurrence_limit
La chaîne vide n'est pas une valeur valide pour
money
. Pourquoi ne pas simplement utilisernull
?Ne fais pas ça. Aussi simple que cela. Gérez-le dans votre couche de présentation.
''
n'est pas un nombre, il ne peut donc pas être stocké en tant que valeurmoney
, et il est implicitement converti en0
. Vous ne voulez certainement pas traiter vos chiffres comme unvarchar
(car je peux vous assurer que100
est supérieur à2
, pas moins que lui) alors laissez-le tel quel.Le résultat va à la feuille Excel. Les exigences de l'utilisateur sont d'avoir un espace vide si NULL
Alors corrigez tout ce qui sort sur Excel, @Serdia. La plupart des applications n’affiche pas réellement
NULL
, elles affichent une "cellule" vide, donc quel que soit le processus ETL que vous utilisez, il met en fait "NULL". Corrigez le processus ETL. Ce ne sont vraiment que les IDE qui ont tendance à afficherNULL
, car il est différent de''
lorsqu'il s'agit de chaînes.