在我的T-SQL选择查询中,对于每条记录,我想返回字段值(数字),除非它是0(零),我想返回文本'N / A'。实现这一目标的最简单方法是什么?我尝试过使用带有CAST和CONVERT的CASE语句,但无法得到我需要的结果。
答案 0 :(得分:0)
DECLARE @Field NUMERIC
SET @Field = 0
SELECT CASE WHEN cast(@Field as nvarchar(50)) = '0' then 'N/A' ELSE cast(@Field as nvarchar(50)) END
答案 1 :(得分:0)
您需要从CASE语句返回相同的数据类型,否则在这种情况下,它会尝试将toe“N / A”文本值转换为数字类型。使用以下内容,根据需要调整数据类型:
SELECT CASE [MyFieldName] WHEN 0 THEN 'N/A'
ELSE CAST([MyFieldName] AS VARCHAR(50))
END
...
答案 2 :(得分:0)
如果该字段不可为空:
COALESCE(NULLIF(fieldname,0),'N/A')
否则:
CASE CONVERT(VARCHAR,fieldname) WHEN '0' THEN 'N/A' ELSE CONVERT(VARCHAR,fieldname) END