2017-02-13 1 views
0

데이터 형식이 varchar 인 열이 있습니다. 숫자가 아닌 모든 값을 NULL으로 바꾸고 싶습니다.열 값이 숫자인지 확인하십시오. SSIS

예를 들어 내 열은 MIGB_MGW의 값을 포함 할 수 있지만 1352도 포함 할 수 있습니다. 내가 Derived Column Transformation Editor로 사용하고 현재의 표현은 다음과 같습니다

(DT_I4)kbup == (DT_I4)kbup ? 1 : 0 

그러나 물론 이것이 내가 1로 유지하려는 모든 값을 대체

. 숫자 값을 유지하는 데 사용할 표현식은 무엇입니까? (이 예에서는 1352)

+0

'사례 숫자가 (dt_i4)이면 dt_I4 else null end' – xQbert

답변

1

, 당신은 NULL(DT_STR)를 사용할 수 있습니다. DT_I4 당신은 NULL(DT_I4)

그런 다음 유지하려는 원래 varchar 값을 반환하기 위해 0의 장소에서 (DT_I4)kbup을 사용할 수 있습니다 사용할 수 DT_I4 A를 변환 :

(DT_I4)kbup == (DT_I4)kbup ? (DT_I4)kbup : NULL(DT_I4) 
2

사용 NOT LIKE

SELECT CASE 
     WHEN col NOT LIKE '%[^0-9]%' THEN col 
     ELSE NULL 
     END as Only_Numeric 
FROM (VALUES ('MIGB_MGW'), 
       ('1352')) tc(col) 

결과 : 당신이 nullvarchar의 유형을 원하는 경우

Only_Numeric 
------------ 
NULL 
1352 
2

또 다른 옵션의 경우를 2012+는 Try_Convert()

SELECT Try_Convert(float,col) 
FROM (VALUES ('MIGB_MGW'), 
       ('2.6e7'), 
       ('2.6BMW'), 
       ('1352')) tc(col) 

반환

입니다
NULL 
26000000 
NULL 
1352 
2

파생 열을 사용하여 변환 한 다음 오류 출력의 무시 오류 옵션을 사용할 수 있습니다. enter image description here

관련 문제