【发布时间】:2020-10-14 22:10:06
【问题描述】:
我有以下case语句;
case when (
CASE
WHEN datediff(year,view_3.[PERSON BIRTH DATE], @ReportPeriodStartDate) >= 19 AND view_3.[NI NUMBER] IS NOT NULL
THEN '' ELSE view_3.[NI NUMBER] END ) = 0 then '' else view_3.[NI NUMBER] END AS [NI NUMBER],
我希望它返回
Birthddate NI Number
14/04/2012 9000
06/05/2020 2000
01/01/2001
22/12/1998
但我得到的输出是;
Birthddate NI Number
14/04/2012 9000
06/05/2020 2000
01/01/2001 0
22/12/1998 0
我不想要零,我想要空字符串。
【问题讨论】:
-
CASE表达式。并且空字符串不是值int值(''作为int实际上隐式转换回0)。虽然您可以将所有内容都转换为varchar,但这不是一个好主意(9不大于10,但'9'是 大于@ 987654333@)。听起来像是显示层的工作,而不是数据引擎。