2014-05-22 6 views
0

Je veux afficher un champ vide au lieu de la valeur zéro du champ Expression. Si exp est du type INT. chaque fois que j'essaie d'utiliser (cas où exp1 est 0 alors '' else exp1 finit comme exp1) mais il obtient toujours 0 comme sortie. toute aide appréciée. MerciRemplacer 0 par des espaces

+3

Pas tout à fait sûr de ce que vous demandez ici. Pourriez-vous poster le code que vous avez essayé? – paqogomez

+2

Vous voudrez probablement utiliser les mots clés 'CAST()' ou 'CONVERT()'. –

+0

J'ai des champs, ids est varchar, mais la taille et le poids sont de type interger. en ce moment je reçois 0s pour la taille et le poids s'il n'y a pas de valeurs (en utilisant la déclaration de cas). Mais je veux vide dans ces champs – user3502587

Répondre

5

Si exp est un type numérique, vous devrez le convertir en chaîne en utilisant CAST or CONVERT. En outre, je ne crois pas exp1 is 0 fonctionnera; Je pense que vous cherchez exp1 = 0 à la place.

Essayez quelque chose comme ceci:

(case when exp1 = 0 then '' else cast(exp1 as varchar(30)) end) as exp1 

(case when exp1 = 0 then '' else convert(varchar(30), exp1) end) as exp1 

Ou en utilisant une simple expression CASE, comme ceci:

(case exp1 when 0 then '' else cast(exp1 as varchar(30)) end) as exp1 

(case exp1 when 0 then '' else convert(varchar(30), exp1) end) as exp1 

Note: La longueur par défaut pour varchar et nvarchar dans CAST et CONVERT est 30, donc cast(exp1 as varchar) ou convert(varchar, exp1) fonctionnerait aussi, mais en pratique, il est préférable de spécifier les longueurs de ces types chaque fois que vous utilisez t ourlet.


Cependant, si ce que vous préférez faire est de convertir la valeur 0 à null, il est assez facile. Il suffit d'utiliser NULLIF:

nullif(exp1, 0) exp1 

Cela renverra NULL si exp1 à 0 évalue, sinon elle retournera la valeur de exp1. Lorsque vous insérez cette valeur dans une table, assurez-vous que la colonne dans laquelle vous l'insérez est nullable. Si vous n'êtes pas familier avec l'utilisation de null, consultez le Wikipedia article sur le sujet pour plus d'informations.

+2

[S'il vous plaît ne soyez pas paresseux à propos de varchar vs varchar (n)] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to -kick-declaring-varchar-without-length.aspx) –

+0

@AaronBertrand J'avais en fait 'varchar (30)' au début mais je l'ai laissé tomber pour rendre le code plus compact et parce que je pensais que OP préfèrerait ça. Mais vous avez raison, il est préférable d'être explicite à propos de ces choses. Quoi qu'il en soit, merci pour l'article. –

+0

indiquant toujours 0 dans ces champs. J'ai source-table où hauteur et poids sont dans varchar() et destination-table la hauteur et le poids sont en numeric(). Je veux insérer les données source dans la destination. Mais le problème ici est le champ de hauteur et de poids continue à apparaître comme zéro dans la destination, chaque fois qu'il n'a pas de valeur. Je veux juste la hauteur vierge, id poids b25 146 162 t41 135 G89 201 tableB destination id hauteur poids B25 146 162 135 0 t41 G89 0 201 – user3502587

0

J'utilisé RegEx

{ 
    cast(trim(
    replace(to_char(value),'0','')) as int) 
} 
Questions connexes