2016-04-19 20 views
1

ゼロ値またはNULL値の整数フィールドのために空白が表示されます。ストアドプロシージャに頼らずに、NULLまたはゼロ値の何も表示しないようにするにはどうすればいいですか?MS SQLサーバー:<code>NULL</code>値のためのゼロを表示する</p> <pre><code>select COALESCE(my_integer_field, '') from my_table </code></pre> <p>:私はこれを使用することができる午前

+2

"ストアドプロシージャに頼る" ???なぜあなたはそのように感じるのか分かりません。正直なところ、各問合せをストアド・プロシージャに入れるように努めるべきです。正直なところ、私はprocがどうにかあなたを助けてくれるのか見ていない。整数列を持ち、 ''を使用しようとすると、暗黙の変換が実行されます。空の文字列をintに暗黙的に変換すると、結果は0になります。空の文字列を持つように、カラムを文字データ型にキャスト/変換するだけです。私はこのタイプのものがSQLではなくフロントエンドに属していることを示唆しています。 –

+0

Sean、あなたのお世話に感謝します。私のケースでは、私はちょうどストアドプロシージャを使用せずにこれを解決したかったのです。私はストアドプロシージャが悪い解決策であるとは言いません。 – curious1

+1

私の主なポイントは、すべてをストアドプロシージャにするために努力する必要があるということです。それらを避けようとするのは完全に後ろ向きです。 –

答えて

5

DBではなくプレゼンテーション層の仕事のようです。

とにかくあなたが使用できます。

SELECT CASE WHEN my_integer_field = 0 OR my_integer_field IS NULL THEN '' 
     ELSE CAST(my_integer_field AS VARCHAR(10)) 
     END 
FROM my_table; 

またはIIF(SQL Serverを2012+)を使用して:

SELECT IIF(my_integer_field = 0 OR my_integer_field IS NULL, 
      '', 
      CAST(my_integer_field AS VARCHAR(10))) 
FROM my_table; 

LiveDemo

blank(空のことを覚えておいてください文字列'')は、INTのデータ型をstringに変更します。


あるいは短い:

SELECT *,COALESCE(NULLIF(CAST(my_integer_field AS VARCHAR(10)) ,'0'), '') AS result 
FROM my_table; 

LiveDemo2

出力:

╔══════════════════╦════════╗ 
║ my_integer_field ║ result ║ 
╠══════════════════╬════════╣ 
║ NULL    ║  ║ 
║ 0    ║  ║ 
║ 1    ║  1 ║ 
║ 2    ║  2 ║ 
╚══════════════════╩════════╝ 
+1

あなたのスルーとクリスタルクリアな答えに感謝します! – curious1

関連する問題

 関連する問題