sql-server - 将数据类型 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
我需要一个数字结果
解决方案
正如 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
推荐阅读
- json - 如何解决“无效类型。需要整数但得到数字。” 用于 Power Automate 中的 JSON 有效负载?
- javascript - 将 HTML 文件作为选项卡动态添加到 Kendo TabStrip
- terraform - 类型映射的变量插值
- azure - 在现有 Azure SQL Server 中创建 sql 数据库时出错
- ruby-on-rails - 生产中的 react-rails 无法创建新对象
- vb.net - 问题查询通过授权承载到达 api rest
- sql - 如何从一个表中的列中查询所有值在不同表中的另一列中具有所有值?
- ftp - 如何设置 ip 对 ftp 服务器有效
- angular - 以角度反应形式提交表单后显示错误
- java - 如何使用 json 对象名称作为增量值?