我的现有表格中包含NVARCHAR
类型的'price_info'列。我想添加MONEY
类型的新列“价格”,并且(在可能的情况下)将“price_info”列的内容转换/复制到其中。
如果'price_info'仅包含数字数据,则可以轻松转换该值。但是'price_info'当然也可以包含无法转换为MONEY
类型的数据,在这种情况下会发生错误。
有没有办法只复制转化为MONEY
成功的值,并默默忽略所有其他行(或在这些情况下将'price'列设置为0)?
E.g。我想拥有的是这样的(伪代码):
update products set price = some_conversion_function(money, price_info, 0)
(其中0是转换失败时使用的默认值。)
答案 0 :(得分:3)
如果您只需要通过脚本执行此操作,那么您可以运行2次更新。
更新1:运行更新并设置ISNUMERIC为真的价格
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的文档