WHEN语句中的NULL检查在SQL Server中不起作用

我希望下面的代码应打印“ No Conversion”,但会收到以下错误“将数据类型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  
cg990942 回答:WHEN语句中的NULL检查在SQL Server中不起作用

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
本文链接:https://www.f2er.com/3161445.html

大家都在问