2013-10-09 38 views
1

在我的T-SQL select查询中,对于每条记录,我想返回字段值(数字),除非它是0(零),我想返回文本'N/A ”。什么是最简单的方法来完成这个?我曾尝试使用CAST和CONVERT的CASE语句,但无法获得我需要的结果。文本代替零结果

+0

什么你使用铸铁时收到错误消息/在一个案件转换? – GPH

回答

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 
+0

谢谢你的建议。我发现你的例子最简单的应用。 – twinspar

0

你需要从你的CASE语句在这种情况下,它正试图到脚趾“N/A”文本值转换为数值型否则返回相同的数据类型。根据需要使用以下,调整为您的数据类型:

SELECT CASE [MyFieldName] WHEN 0 THEN 'N/A' 
          ELSE CAST([MyFieldName] AS VARCHAR(50)) 
     END 
    ... 
+0

......你的意思是...... ......其他人......“对吧? – Chains

+0

是的,你是正确的,否则ELSE CASE是一个错字。你应该注意到它应该是ELSE CAST。 –

0

如果该字段不可为空:

COALESCE(NULLIF(fieldname,0),'N/A') 

否则:

CASE CONVERT(VARCHAR,fieldname) WHEN '0' THEN 'N/A' ELSE CONVERT(VARCHAR,fieldname) END