식에서의 Integration Services 데이터 형식
식 계산기는 Integration Services 데이터 형식을 사용합니다. 데이터가 Integration Services 패키지의 데이터 흐름에 처음 포함될 때 데이터 흐름 엔진이 모든 열 데이터를 Integration Services 데이터 형식으로 변환하므로 식에 사용되는 열 데이터는 이미 Integration Services 데이터 형식입니다. 조건부 분할 및 파생 열 변환에 사용된 식은 열 데이터가 포함된 데이터 흐름에 속해 있으므로 열을 참조할 수 있습니다.
식에 변수를 사용할 수도 있습니다. 변수는 Variant 데이터 형식으로, 식 계산기는 식을 계산하기 전에 변수의 데이터 형식을 Variant 하위 형식에서 Integration Services 데이터 형식으로 변환합니다. 변수는 Integration Services 데이터 형식의 하위 집합만 사용할 수 있습니다. 예를 들어 변수는 BLOB(Binary Large Object Block) 데이터 형식을 사용할 수 없습니다.
Variant 데이터 형식을 Integration Services 데이터 형식으로 매핑하는 방법과 Integration Services 데이터 형식에 대한 자세한 내용은 Integration Services 데이터 형식을 참조하십시오.
또한 식은 문자열, 부울 및 숫자 리터럴을 포함할 수 있습니다. 식 계산기는 항상 문자열 리터럴을 DT_WSTR 데이터 형식으로 변환하고 부울 리터럴을 DT_BOOL 데이터 형식으로 변환합니다. 식 계산기는 따옴표로 묶인 모든 값을 문자열로 해석합니다. 숫자 리터럴은 Integration Services 숫자 데이터 형식 중 하나로 변환됩니다. 숫자 리터럴을 Integration Services 숫자 데이터 형식으로 변환하는 방법은 리터럴(SSIS)을 참조하십시오.
[!참고]
부울 값은 숫자가 아니라 논리 값입니다. 일부 환경에서는 부울 값이 숫자로 표시될 수 있지만 숫자로 저장되지는 않으며, 다양한 프로그래밍 언어에서는 부울 값을 .NET Framework 메서드와는 다른 숫자 값으로 표시합니다.
예를 들어 Visual Basic에서 사용할 수 있는 변환 함수는 True를 -1로 변환하지만 .NET Framework의 System.Convert.ToInt32 메서드는 True를 +1로 변환합니다. Integration Services 식 언어는 True를 -1로 변환합니다.
오류나 예기치 않은 결과를 방지하려면 True 및 False에 특정 숫자 값을 사용하는 코드를 작성하지 말아야 합니다. 가능하면 부울 변수는 부울 변수용으로 설계된 논리 값으로만 사용해야 합니다.
식에 사용되는 데이터에 대한 요구 사항
식 계산기는 모든 Integration Services 데이터 형식을 지원합니다. 그러나 연산이나 함수에 따라 피연산자와 인수에 특정 데이터 형식이 필요합니다. 식 계산기는 식에 사용된 데이터에 대해 다음 데이터 형식 요구 사항을 설정합니다.
논리 연산에 사용된 피연산자는 부울 값이어야 합니다. 예를 들어 ColumnA > 1&&ColumnB < 2와 같습니다.
수치 연산에 사용된 피연산자는 숫자 값이어야 합니다. 예를 들어 23.75 * 4와 같습니다.
논리 및 등가 연산과 같은 비교 연산에 사용된 피연산자는 호환 가능한 데이터 형식이어야 합니다.
예를 들어 다음 예의 식 중 하나는 DT_DBTIMESTAMPOFFSET 데이터 형식을 사용합니다.
(DT_DBTIMESTAMPOFFSET,3) "1999-10-11 20:34:52.123 -3:30" != (DT_DBDATE)"1999-10-12"
시스템은 (DT_DBDATE)"1999-10-12" 식을 DT_DBTIMESTAMPOFFSET으로 변환합니다. 변환된 식은 "1999-10-12 00:00:00.000 +00:00"이 되고, 이는 다른 식인 (DT_DBTIMESTAMPOFFSET,3) "1999-10-11 20:34:52.123 -3:30"과 같지 않으므로 예는 TRUE로 계산됩니다.
수치 연산 함수에 전달된 인수는 숫자 데이터 형식이어야 합니다. 함수나 연산에 따라 특정 숫자 데이터 형식이 필요할 수 있습니다. 예를 들어 HEX 함수는 부호 있는 정수나 부호 없는 정수가 필요합니다.
문자열 함수에 전달된 인수는 문자 데이터 형식 DT_STR 또는 DT_WSTR여야 합니다. 예를 들어 UPPER("flower")와 같습니다. SUBSTRING과 같은 일부 문자열 함수는 시작 위치와 문자열 길이를 나타내는 추가 정수 인수가 필요합니다.
날짜 및 시간 함수에 전달된 인수는 유효한 날짜여야 합니다. 예를 들어 DAY(GETDATE())와 같습니다. DATEADD와 같은 일부 함수는 날짜에 추가할 일 수를 나타내는 추가 정수 인수가 필요합니다.
부호 없는 8바이트 정수와 부호 있는 정수를 결합하는 연산에서 결과 형식을 명확히 하려면 명시적 캐스트가 필요합니다. 자세한 내용은 캐스트(SSIS)를 참조하십시오.
많은 연산 및 함수 결과에는 미리 결정된 데이터 형식이 있습니다. 인수의 데이터 형식이거나 식 계산기가 결과를 캐스팅하는 데이터 형식일 수 있습니다. 예를 들어 논리적 OR 연산자(||)의 결과는 항상 부울이고 ABS 함수의 결과는 인수의 숫자 데이터 형식이며 곱하기의 결과는 손실 없이 결과를 유지할 수 있는 가장 작은 숫자 데이터 형식입니다. 결과 데이터 형식에 대한 자세한 내용은 연산자(SSIS) 및 함수(SSIS)를 참조하십시오.