Sql server 如何安全地将NVARCHAR转换为货币
我有一个现有的表,其“price\u info”列的类型为Sql server 如何安全地将NVARCHAR转换为货币,sql-server,sql-server-2008,tsql,type-conversion,Sql Server,Sql Server 2008,Tsql,Type Conversion,我有一个现有的表,其“price\u info”列的类型为NVARCHAR。我想添加一个类型为MONEY的新列“price”,并(在可能的情况下)将“price\u info”列的内容转换/复制到该列中 如果“价格信息”仅包含数字数据,则可以轻松转换该值。当然,“价格信息”也可能包含无法转换为类型MONEY的数据,在这种情况下会发生错误 是否有一种方法可以仅复制成功转换为MONEY的值,并自动忽略所有其他行(或在这些情况下将“price”列设置为0) 例如,我想要的是这样的东西(伪代码): (其
NVARCHAR
。我想添加一个类型为MONEY
的新列“price”,并(在可能的情况下)将“price\u info”列的内容转换/复制到该列中
如果“价格信息”仅包含数字数据,则可以轻松转换该值。当然,“价格信息”也可能包含无法转换为类型MONEY
的数据,在这种情况下会发生错误
是否有一种方法可以仅复制成功转换为MONEY
的值,并自动忽略所有其他行(或在这些情况下将“price”列设置为0)
例如,我想要的是这样的东西(伪代码):
(其中0是转换失败时使用的默认值)。如果只需要通过脚本执行此操作,则可以运行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上的文档
try\u convert
仅限2012年。问题被标记为2008年我直接从他的问题中复制了代码我添加的只是WHERE子句,实际上我甚至不知道try\u convert,我假设这是他们编写的自定义函数。是时候读一读了:)谢谢,行得通。我不知道有一个try\u convert
函数(我使用的是SQL 2008),但它仍然可以与正常的convert
函数一起工作。我使用try\u convert
作为我想要的示例(某种伪代码)。
update products
set price = 0
where ISNUMERIC(price_info) = 0