使用 Case 函数使 NULL 值显示为空白
Using Case Function to make NULL values appear as blank
我不断收到错误消息,提示我的 Case 函数不正确。我的目标是使用 Case 函数使每个 NULL 或“0”值都显示为空白。 Incompatible data types in case statement 是我在 report studio 中 运行 时得到的提示。 table 的示例是这样的。 WCPDOD 是一个整数,WCPDOD 9int,null)
WCPDOD POLICY CLAIM NUMBER
19741020 2001A 123456N000040
20040101 2003A 456789001531
20021220 00594 123456
20040507 2003A 2222043621
20040517 2003I 90043625
CASE
WHEN [WCPDOD] = '0' THEN ' '
WHEN [WCPDOD] IS NULL THEN ' '
ELSE [WCPDOD]
END
由于 WCPDOD
是一个整数,您不应将其与 '0'
等字符串文字进行比较,而应将其与 0
等数字文字进行比较。更重要的是,case
语句的不同分支 return 不同类型 - 前两个 return 字符串(' '
文字)和 else
分支 return 是 integer
。您应该将其转换为字符串:
CASE
WHEN [WCPDOD] = 0 THEN ' '
WHEN [WCPDOD] IS NULL THEN ' '
ELSE CAST ([WCPDOD] AS VARCHAR(40))
END
我不断收到错误消息,提示我的 Case 函数不正确。我的目标是使用 Case 函数使每个 NULL 或“0”值都显示为空白。 Incompatible data types in case statement 是我在 report studio 中 运行 时得到的提示。 table 的示例是这样的。 WCPDOD 是一个整数,WCPDOD 9int,null)
WCPDOD POLICY CLAIM NUMBER
19741020 2001A 123456N000040
20040101 2003A 456789001531
20021220 00594 123456
20040507 2003A 2222043621
20040517 2003I 90043625
CASE
WHEN [WCPDOD] = '0' THEN ' '
WHEN [WCPDOD] IS NULL THEN ' '
ELSE [WCPDOD]
END
由于 WCPDOD
是一个整数,您不应将其与 '0'
等字符串文字进行比较,而应将其与 0
等数字文字进行比较。更重要的是,case
语句的不同分支 return 不同类型 - 前两个 return 字符串(' '
文字)和 else
分支 return 是 integer
。您应该将其转换为字符串:
CASE
WHEN [WCPDOD] = 0 THEN ' '
WHEN [WCPDOD] IS NULL THEN ' '
ELSE CAST ([WCPDOD] AS VARCHAR(40))
END