2013-10-09 2 views
1

T-SQL select 쿼리에서 각 레코드에 대해 'N/A'텍스트를 반환하려는 0 (영)이 아닌 한 필드 값 (숫자)을 반환하고 싶습니다. '. 가장 간단한 방법은 무엇입니까? 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 문에서 동일한 데이터 형식을 반환해야합니다. 그렇지 않으면 toe "N/A"텍스트 값을 숫자 형식으로 변환하려고합니다. 필요에 따라 데이터 유형에 대한 조정, 다음을 사용

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

... 당신은'... 거친다 ... '맞습니까? – Chains

+0

예, ELSE CASE가 오타였습니다. 당신이 언급 한 것처럼 그것은 ELAST CAST 였을 것입니다. –

0

을 필드가 널 (NULL)이 아닌 경우 : 그렇지 않으면

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

:

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