3

タイプが「price_info」列の既存のテーブルがありますNVARCHAR。タイプの新しい列「price」を追加し、MONEY(可能な場合は)「price_info」列の内容をその列に変換/コピーしたいと思います。

'price_info'に数値データのみが含まれている場合、値は簡単に変換できます。ただし、もちろん「price_info」には、タイプに変換できないデータを含めることもできMONEYます。その場合、エラーが発生します。

変換MONEYが成功した値のみをコピーし、他のすべての行を黙って無視する(またはこれらの場合は「price」列を0に設定する)方法はありますか?

たとえば、私が欲しいのは次のようなものです(擬似コード):

update products set price = some_conversion_function(money, price_info, 0)

(ここで、0は変換が失敗した場合に使用されるデフォルト値です)。

4

1 に答える 1

3

スクリプトのみを介してこれを行う必要がある場合は、2つの更新を実行できます。

更新1:更新を実行し、ISNUMERICがtrueになる価格を設定します

update products 
set price = convert(money, price_info)
where ISNUMERIC(price_info) = 1

更新2:更新を実行して、価格を0に設定します。ISNUMERICはfalseです。

update products 
set price = 0
where ISNUMERIC(price_info) = 0

ISNUMERICのドキュメントは、http://msdn.microsoft.com/en-us/library/ms186272.aspxから入手できます

于 2012-08-16T15:28:19.897 に答える