首页 > 解决方案 > 将数据类型 nvarchar 转换为数字时出错 - 排序规则

问题描述

将数据类型 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                        

我需要一个数字结果

标签: sql-serversql-server-2012

解决方案


正如 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

推荐阅读