2014-12-03 4 views
0

안녕 Details라는 테이블이 Int 데이터 형식의 열이 들어 있습니다. 이제 열 Day1에 숫자가 들어있는 경우 100을 표시하고 싶습니다. null이 포함되어 있으면 null 만 표시하고 싶습니다. 는 별도로 case 문 아래 서면에서 나는 열 각각의 모든에 대한 케이스를 쓰고 싶지 않는 내가 31 개의 열을했다가케이스없이 null 값 처리

Case when Day1=10 /*(Apart from 0 it can have any value including null)*/ then 100 else Day1 

을? : 할 수있는 더 간단한 방법이있다. 이 작업을 수행하는 더 좋은 방법이 있습니까?

답변

0

확실히 아니, 당신은 ISNULL() 또는 COALESCE() 기능을 사용하여 생각하고 있지만

Case when Day1 > 0 or Day1 IS NULL then 100 else Day1 
0

안녕하세요 당신이 CASE 문에서 NULL을 확인할 수 있습니다 아래처럼 당신의 CASE 표현을 수정할 수있는 경우 :

SELECT CASE WHEN Day1 IS NULL THEN Day1 ELSE 100 END AS Day1 FROM Details 
0

글쎄, 나는 그러한 쿼리를 작성하려는 의도가 정확히 무엇인지 알지 못했지만, 그럼에도 불구하고이 경우에이를 수행 할 것입니다. 당신은 당신이 숫자인지 여부를 확인하고 싶은 말은 이후

CASE WHEN Day1 IS NULL THEN NULL ELSE 100 END 
0

ISNUMERIC가 마음에 온다 :

CASE WHEN ISNUMERIC(Day1) = 1 THEN 100 ELSE NULL END 

,하지만 난 단순히

CASE WHEN Day1 IS NULL THEN NULL ELSE 100 END 

또는

를 작성하는 생각
IIF(ISNUMERIC(Day1) = 1, 100, NULL) 

에 더 있습니다. tuitive (이 경우 CASE이 필요하지 않은지 확인하십시오. :-))

0

당신은 SQL 서버 2012 이상을 사용하는 경우 새로운 :

IIF(Day1 IS NULL, NULL, 100) 

또는 더 간결 같은 일을 할 수있는 사용자 정의 함수를 만들 수는 (SQL Server의 모든 버전에서 작동) :

CREATE FUNCTION dbo.MyFunc(@Day int) 
RETURNS int 
RETURN (CASE WHEN @Day IS NOT NULL THEN 100 ELSE NULL END) 

사용법 :

SELECT MyFunc(Day1), MyFunc(Day2)