sql - WHEN 语句中的 NULL 检查在 SQL Server 中不起作用
问题描述
我希望以下代码应打印“无转换”,但会收到以下错误“将数据类型 varchar 转换为数字时出错。” 当语句TRY_PARSE
内部WHEN
返回 null 时,该THEN
块应该执行吗?
DECLARE @VALUE varchar(20) = 'NA'
SELECT
CASE
WHEN TRY_PARSE(@VALUE AS DECIMAL) IS NULL
THEN 'No Conversion'
ELSE (CONVERT(DECIMAL(10, 3), @VALUE, 0))
END
解决方案
表达式的所有分支都CASE
需要具有相同的类型。鉴于错误消息是文本,您还应该将强制转换的十进制值包含为文本,如下所示:
SELECT CASE WHEN TRY_PARSE(@VALUE AS DECIMAL) IS NULL
THEN 'No Conversion'
ELSE CONVERT(varchar(max), CONVERT(decimal(10,3), @VALUE, 0)) END
推荐阅读
- c# - Unity2D 粒子系统 - 随机化层或 Z 变换值,用于与其他游戏对象出现在前面/后面/同一层
- geolocation - 从纬度/经度计算方位变化
- asp.net-core - 如何在 ASPNETCore 的抽象类中获取 HttpContext
- php - 使用“endroid/qr-code”库生成 qrcode 时未捕获的错误
- javascript - React Application 拥有一个暂存环境并在 AWS Elastic BeanStalk 上使用 Docker 进行部署
- ios - 使用 Vuejs 在 iOS 上安装 PWA 提示
- spring - SpringBootTest 中的 HttpMessageNotWritableException
- javascript - 如何使用从已经样式化的组件扩展而来的样式化组件?
- api - Onelogin 可以生成 Google 身份验证并刷新具有适当范围的令牌吗?
- node.js - 节点立即为生成的外部应用程序触发“关闭”(仅限 macOS)