1

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

4

3 回答 3

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
于 2013-10-09T15:39:15.177 回答
0

您需要从 CASE 语句中返回相同的数据类型,否则在这种情况下,它会尝试将 toe“N/A”文本值转换为数字类型。使用以下内容,根据需要调整您的数据类型:

SELECT CASE [MyFieldName] WHEN 0 THEN 'N/A' 
                          ELSE CAST([MyFieldName] AS VARCHAR(50)) 
       END
  ...
于 2013-10-09T15:40:20.683 回答
0

如果该字段不可为空:

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

否则:

CASE CONVERT(VARCHAR,fieldname) WHEN '0' THEN 'N/A' ELSE CONVERT(VARCHAR,fieldname) END
于 2013-10-09T19:54:21.463 回答