【问题标题】:Error converting data type nvarchar to numeric - Collation将数据类型 nvarchar 转换为数字时出错 - 排序规则
【发布时间】:2018-05-24 00:49:01
【问题描述】:

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

SELECT HCI.variationID, CAST(isnull(HCI.ContractRef, 0) as numeric(32,2)) as 
targethrs
FROM pcms.Variation_New HCI

这是一个很简单的错误,但我已经尝试了很多事情,但没有任何乐趣。这可能会有所帮助

    Column Name   Type          Collation                       
    ContractRef   nvarchar(50)  Latin1_General_CI_AS                        

我需要一个数字结果

【问题讨论】:

  • 不,这没有帮助。首先修复您的数据。使用 try_cast 代替强制转换并过滤空值。那些是需要修复的。
  • 我无法更改数据类型。您的评论没有帮助。

标签: sql-server sql-server-2012


【解决方案1】:

正如 Smor 所提到的,try_convert()try_cast() 在转换失败时不会抛出错误...相反,它会返回 NULL

SELECT HCI.variationID
     , isnull( try_convert(numeric(32,2),HCI.ContractRef), 0) as targethrs
FROM pcms.Variation_New HCI

真正的问题是您有无法转换的数据。要识别这些记录以进行更正:

Select *
 From pcms.Variation_New HCI
 Where try_convert(numeric(32,2),HCI.ContractRef) is null
   and HCI.ContractRef is not null

【讨论】:

  • 谢谢你更有帮助。 TRY_CAST 完美运行。
  • @AngArthur 从来没有怀疑过 :)
猜你喜欢
  • 1970-01-01
  • 2020-11-22
  • 1970-01-01
  • 2016-01-20
  • 1970-01-01
  • 1970-01-01
  • 2012-10-14
  • 2015-03-14
  • 2015-12-24
相关资源
最近更新 更多