SQL Server 在 Case 语句中转换

use*_*212 2 sql-server case case-statement

我有一个名为compositeRate 的列,它是一个decimal(10,2) 数据类型。我正在编写一个 Select 语句,如果 compositeRate 为 0.00,则应返回空字符串,但我收到此错误:Msg 8114,级别 16,状态 5,第 1 行将数据类型 varchar 转换为数字时出错。

这是我的案例陈述

select CASE WHEN compositeRate = 0.00 THEN '' else compositeRate from table
Run Code Online (Sandbox Code Playgroud)

您能告诉我应该在案例陈述中的哪里写“convert”吗?

ang*_*son 6

您需要将部分转换compositeRate为字符串else

SELECT CASE 
          WHEN compositeRate = 0.00 THEN CAST('' AS Varchar(20))
          ELSE CAST(compositeRate AS VARCHAR(20))
       END          AS compositeRate 
  FROM table
Run Code Online (Sandbox Code Playgroud)

或使用CONVERT适当的值。

现在,您有一个返回字符串或数字的 CASE 表达式,您必须决定返回哪种类型是正确的。一个 CASE 表达式必须返回一种类型。