3

我有一个现有的表,其类型为 'price_info' 列NVARCHAR。我想添加一个类型为“price”的新列,MONEY并(在可能的情况下)将“price_info”列的内容转换/复制到其中。

如果“price_info”仅包含数字数据,则可以轻松转换该值。但当然 'price_info' 也可以包含无法转换为类型的数据,MONEY在这种情况下会发生错误。

有没有办法只复制转换MONEY成功的值,而忽略所有其他行(或在这些情况下将“价格”列设置为 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 为假。

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 回答