sql-server - SQL 如何使用 Case 语句仅对数值应用计算
问题描述
我有存储为数字或 varchar 值的数据。
我正在执行以下操作,以便如果该值为数字,我只想显示它是什么。如果该值为数字,我想对其应用计算。我怎样才能做到这一点?
目前,我收到错误:
将数据类型 nvarchar 转换为数值时出错
这是我的选择声明:
select
case
when IsNumeric(value) = 1
then cast(value as decimal(6, 2)) / coalesce(divider)
else value
end as [value]
解决方案
ISNUMERIC
众所周知,准确地判断一个值实际上是数字......
使用起来会简单得多TRY_CAST
or -如果无法根据需要转换值,TRY_CONVERT
这些函数将返回:NULL
SELECT
TRY_CAST(value AS DECIMAL(6, 2)) / COALESCE(NULLIF(divider, 0))
在官方 MS 文档网站上获取更多详细信息
此外,T-SQL 中的CASE
表达式必须为所有可能的返回返回相同的数据类型DECIMAL
——在一种情况下返回 a ,而NVARCHAR
在另一种情况下返回 an 无论如何......
推荐阅读
- botframework - ConversationState 和 UserState 有什么区别?
- javascript - 单击提交按钮时如何传递单击按钮的值?
- r - 从R中的另一个表信息创建一个表
- r - 数据框中散布的分类值的累积计数,独立于每个 id
- php - 无法安装composer PHP版本错误
- jmeter - 解析异常 - jMeter json 后处理器;在提取json响应的最后一个元素时
- keras - Keras 损失函数的季节性
- c# - asp.net 核心中的 csp-report 端点
- plotly.js - hoverinfo 在 plotly 中无法使用 hovertemplate
- java - 如何在 Java 中修复 mediawiki-api 上的“readapidenied”错误