将数据类型nvarchar转换为实数时出错



我需要减去两个nvarchar值,并将结果存储在另一列中。我知道,首先我需要将nvarchar转换为数值,但我总是收到这个错误

将数据类型nvarchar转换为真实时出错

在varchar中只存储数值,但我似乎无法正确进行转换。

这看起来像是SQL Server错误。如果是,请使用try_convert():

select try_convert(real, string_col)

如果存在转换问题,则返回NULL而不是错误。

您可以使用找到有问题的值

select string_col
from t
where try_convert(real, string_col) is null and
string_col is not null;

使用case语句。它应该类似于(SELECT中的t-sql伪代码(

case when IsNumeric(column1) AND IsNumeric(column2) 
then cast(column1 as decimal) - cast(column2 as decimal) 
else NULL end as column3

这是一个经典的例子,说明了为什么不应该混合类型(在这种情况下是nvarchar和decimal(,有各种各样的shananigans,比如('abc'-5(、(NULL-NULL(或('live'-'3'(。如果这样做有效,那么查看"NULL"结果可能是个好主意,因为这可能会让您对系统中收集的垃圾种类有宝贵的见解。

你说过。。。

在varchar中只存储数值似乎无法正确转换。

如果这是绝对正确的,那么很有可能在导致错误的项目中有1或2个尾随控制字符(制表符、回车符、换行符等(。

请先尝试将NVARCHAR值转换为MONEY数据类型。它不适用于前导控制字符,但适用于尾随控制字符。很明显,你的原始值没有超过4个小数位,当然。

最新更新