2011-12-21 5 views
3

テーブルの画像列がヌルかどうかを調べる必要があります。私はCASEを使用しようとしてきましたが、私はいつもエラーが発生します。画像列がヌルかどうかを調べる

問合せ:

SELECT OutgoindDoc = CASE ReceivedData  
         WHEN null THEN 'null' 
         ELSE CONVERT(xml,(CONVERT(varbinary(max),ReceivedData))) 
         END 
FROM ib_IncomingData 

そして、私は取得していますエラー:

をメッセージ306、レベル16、状態1、行1
text、ntext、およびimageデータ型はできませんIS NULLまたはLIKE演算子を使用する場合を除いて、比較またはソートされます。

私は必要な結果を得るために何が使えますか?

+0

なぜそれが 'NULL'であるかを知るために' XML'に変換していますか? –

+1

@MartinSmith:彼はいません... –

+0

@ TomalakGeret'kal - 彼は何をしていますか?カラムが 'NULL'の場合、キャストの結果は' NULL'になります。なぜNULLを文字列として返すのでしょうか? –

答えて

5

CASE <expression> WHEN <value> THENは平等/等価比較を使用しますが、エラーが—画像は、「比較」できないことを示してNULLが同等の量と—ではありませんので、あなたはIS NULLチェックが必要。幸い

、あなたはそれを省略することができ、ユーザが提供するパラメータに出平等をもたらし— CASE WHEN <test> THENthere is another construct

SELECT OutgoindDoc = CASE 
         WHEN ReceivedData IS NULL THEN 
          'null' 
         ELSE 
          CONVERT(xml,(CONVERT(varbinary(max),ReceivedData))) 
         END 
FROM ib_IncomingData 
2

は、以下のことを試してみてください。

SELECT OutgoindDoc = CASE  
         WHEN ReceivedData IS NULL THEN 'null' 
         ELSE CONVERT(xml,(CONVERT(varbinary(max),ReceivedData))) 
         END 
FROM ib_IncomingData 
1

Aより簡潔なバージョンのコメントからものの

SELECT OutgoindDoc = 
     ISNULL(CONVERT(xml,(CONVERT(varbinary(max),ReceivedData))) ,'null') 
FROM ib_IncomingData 

をとにかくこれをやる必要はありません。

関連する問題