我有存储为数字或 varchar 值的数据。
我正在执行以下操作,以便如果值是数字,我只想显示它是什么。如果值是数字,我想对其应用计算。我怎样才能做到这一点?
目前,我收到错误:
将数据类型 nvarchar 转换为数字时出错
这是我的选择语句:
select
case
when IsNumeric(value) = 1
then cast(value as decimal(6, 2)) / coalesce(divider)
else value
end as [value]
Run Code Online (Sandbox Code Playgroud)
ISNUMERIC
众所周知,不擅长准确判断一个实际上是数字的值.....
如果无法按需要转换值,则使用TRY_CAST
或TRY_CONVERT
- 这些函数将返回更简单NULL
:
SELECT
TRY_CAST(value AS DECIMAL(6, 2)) / COALESCE(NULLIF(divider, 0))
Run Code Online (Sandbox Code Playgroud)
在官方 MS 文档站点上获取更多详细信息
此外,T-SQL 中的CASE
表达式必须为所有可能的返回返回相同的数据类型——DECIMAL
在一种情况下返回 a ,而NVARCHAR
在另一种情况下返回 a无论如何都不起作用......