3

SSISを使用して、Excelデータを一時SQLサーバーテーブルに移動し、そこからターゲットテーブルに移動しています。したがって、一時テーブルはvarchar列のみで構成されています。ターゲットテーブルでは、一部の列に金額の値が必要です。私の一時テーブルでは、元のExcel列に数式がありますが、一部の行に空のセルが残っています。これは、空のセルを持つ一時テーブルによって表されます。しかし、これらの列の1つをお金にキャストすると、元々空白だったこれらのセルは、ターゲット列で0,00になります。

もちろん、それは私が望んでいることではないので、どうすればそこでNULL値を取得できますか?必要な0,00がこれらの列の1つに表示される可能性があることに注意してください。

空のセルをNULLにするには、一時テーブルを編集する必要があると思います。SSISパッケージ内からこれを行うことはできますか、それとも使用できるテーブルの設定がありますか?

ありがとうございました。

4

1 に答える 1

8

既存のデータについては、空の場合にデータをNULLに更新する簡単なスクリプトを作成できます。

UPDATE YourTable SET Column = NULL WHERE Column = ''

挿入の場合、 NULLIF関数を使用して、空の場合にnullを挿入できます。

INSERT INTO YourTable (yourColumn)
SELECT NULLIF(sourceColum, '') FROM SourceTable

編集:複数の列を更新するには、2つのソリューションを組み合わせて、次のように記述する必要があります。

UPDATE YourTable SET 
Column1 = NULLIF(Column1, '')
, Column2 = NULLIF(Column2, '') 
WHERE Column1 = '' OR Column2 = '' 

それはすべてを更新します

于 2012-09-07T07:11:05.760 に答える