需要将整个 case 语句转换为 varchar
Need to convert entire case statement to varchar
正在为 NACHRI 提交编写 SQL 摘录。 SSMS v17.6
需要将以盎司为单位的重量转换为克(仅限整数),并使用附加子句将 NULL 值更改为“----”(四个破折号 - 无引号)。这四个破折号位导致整个事情需要成为 VARCHAR,但我不确定如何使用数字方程来做到这一点。
我收到了
Error converting data type varchar to numeric
在以下 case 语句中:
',CASE WHEN baby.OB_DEL_BIRTH_WT > 0 THEN CEILING(baby.OB_DEL_BIRTH_WT/0.035274)
when baby.OB_DEL_BIRTH_WT is null then '----' end as weight_gm'
正确答案的示例如下所示:
3534,
'----',
2784,
3556,
'----'
----
----
使用cast()
:
(CASE WHEN baby.OB_DEL_BIRTH_WT > 0
THEN CAST(CEILING(baby.OB_DEL_BIRTH_WT/0.035274) as VARCHAR(255))
WHEN baby.OB_DEL_BIRTH_WT IS NULL
THEN '----'
END) as weight_gm
或者,假设权重总是大于0
(合理),那么就用COALESCE()
:
COALESCE(CAST(CEILING(baby.OB_DEL_BIRTH_WT/0.035274) as VARCHAR(255)), '----')
请注意,您仍然需要 CAST()
。
如果能分享一下baby的table结构就更好了。
您是否需要以逗号分隔的单个字段的值?然后使用以下查询:
SELECT distinct
abc = STUFF(
(SELECT ',' + (CASE WHEN baby.OB_DEL_BIRTH_WT > 0
THEN CAST(CEILING(baby.OB_DEL_BIRTH_WT/0.035274) as VARCHAR(255))
WHEN baby.OB_DEL_BIRTH_WT IS NULL
THEN '''----'''
END) FROM baby FOR XML PATH ('')), 1, 1, ''
)
FROM baby
这将 return 像这样的单行 3534, '----',2784,3556,'----'
正在为 NACHRI 提交编写 SQL 摘录。 SSMS v17.6
需要将以盎司为单位的重量转换为克(仅限整数),并使用附加子句将 NULL 值更改为“----”(四个破折号 - 无引号)。这四个破折号位导致整个事情需要成为 VARCHAR,但我不确定如何使用数字方程来做到这一点。
我收到了
Error converting data type varchar to numeric
在以下 case 语句中:
',CASE WHEN baby.OB_DEL_BIRTH_WT > 0 THEN CEILING(baby.OB_DEL_BIRTH_WT/0.035274)
when baby.OB_DEL_BIRTH_WT is null then '----' end as weight_gm'
正确答案的示例如下所示:
3534,
'----',
2784,
3556,
'----'
----
----
使用cast()
:
(CASE WHEN baby.OB_DEL_BIRTH_WT > 0
THEN CAST(CEILING(baby.OB_DEL_BIRTH_WT/0.035274) as VARCHAR(255))
WHEN baby.OB_DEL_BIRTH_WT IS NULL
THEN '----'
END) as weight_gm
或者,假设权重总是大于0
(合理),那么就用COALESCE()
:
COALESCE(CAST(CEILING(baby.OB_DEL_BIRTH_WT/0.035274) as VARCHAR(255)), '----')
请注意,您仍然需要 CAST()
。
如果能分享一下baby的table结构就更好了。 您是否需要以逗号分隔的单个字段的值?然后使用以下查询:
SELECT distinct
abc = STUFF(
(SELECT ',' + (CASE WHEN baby.OB_DEL_BIRTH_WT > 0
THEN CAST(CEILING(baby.OB_DEL_BIRTH_WT/0.035274) as VARCHAR(255))
WHEN baby.OB_DEL_BIRTH_WT IS NULL
THEN '''----'''
END) FROM baby FOR XML PATH ('')), 1, 1, ''
)
FROM baby
这将 return 像这样的单行 3534, '----',2784,3556,'----'