다음을 통해 공유


식에서의 데이터 형식 변환

다음과 같은 두 가지 유형의 데이터 변환이 있습니다.

  • 암시적 변환은 식 계산기가 자동으로 데이터를 한 데이터 형식에서 다른 데이터 형식으로 변환하는 것입니다. 예를 들어 smallintint와 비교하는 경우 smallint는 비교되기 전에 암시적으로 int로 변환됩니다.
  • 명시적 변환은 형변환을 사용하여 로컬 변수, 열 또는 다른 식과 같은 값을 한 데이터 형식에서 다른 데이터 형식으로 변환하는 것입니다. 자세한 내용은 형변환(SSIS)을 참조하십시오.

다음 다이어그램에서는 BINARY 연산의 암시적 변환의 결과 유형을 보여 줍니다. 이 테이블에서 열과 행의 교집합은 왼쪽(원본) 및 오른쪽(대상) 유형의 피연산자가 있는 이진 연산의 결과 유형입니다.

데이터 형식 간 암시적 데이터 형식 변환

부호 있는 정수와 부호 없는 정수의 교집합은 두 인수 중 하나보다 클 수도 있는 부호 있는 정수입니다.

부호 없는 8바이트 정수와 부호 있는 정수를 결합하는 연산에서 결과 형식을 명확히 하려면 명시적 형변환이 필요합니다.

인수가 하나인 함수는 다음과 같은 경우를 제외하고 해당 인수의 데이터 형식으로 결과를 반환합니다.

  • DAY, MONTH 및 YEAR는 날짜를 받아서 정수(DT_I4) 결과를 반환합니다.
  • ISNULL은 모든 SSIS 데이터 형식의 식을 받아서 부울(DT_BOOL) 결과를 반환합니다.
  • SQUARE 및 SQRT는 숫자 식을 받아서 비정수 숫자(DT_R8) 결과를 반환합니다.

인수의 데이터 형식이 같으면 결과도 해당 형식이 됩니다. 단, DT_DECIMAL 데이터 형식의 두 값에 대한 이진 연산의 반환 결과는 DT_NUMERIC 데이터 형식입니다.

함수는 또한 문자열, 날짜 및 부울을 비교합니다. 함수가 두 값을 비교하기 전에 식 계산기는 다음과 같은 암시적 변환을 수행합니다.

  • DT_STR 데이터 형식의 문자열은 DT_WSTR 데이터 형식으로 변환됩니다.
  • 날짜 및 시간 값은 DT_DBTIMESTAMP 데이터 형식으로 변환됩니다.

식 계산기는 암시적으로 임의의 값을 부울로 변환할 수 없습니다. 대신 명시적 형변환 연산을 식에 포함해야 합니다. 자세한 내용은 형변환(SSIS)을 참조하십시오.

[!참고] 부울 값은 숫자가 아니라 논리 값입니다. 일부 환경에서는 부울 값이 숫자로 표시될 수 있지만 숫자로 저장되지는 않으며, 다양한 프로그래밍 언어에서는 부울 값을 .NET Framework 메서드와는 다른 숫자 값으로 표시합니다. 예를 들어 Visual Basic에서 사용할 수 있는 변환 함수는 True를 -1로 변환하지만 .NET Framework의 System.Convert.ToInt32 메서드는 True를 +1로 변환합니다. Integration Services 식 언어는 True를 -1로 변환합니다. 오류나 예기치 않은 결과를 방지하려면 TrueFalse에 특정 숫자 값을 사용하는 코드를 작성하지 말아야 합니다. 가능하면 부울 변수는 부울 변수용으로 설계된 논리 값으로만 사용해야 합니다.

호환되지 않는 데이터 형식의 인수와 피연산자가 식에 사용될 수 있으며 이 경우 식 계산기는 암시적 데이터 변환을 수행할 수 없습니다. 예를 들어 식 계산기는 문자열 데이터 형식 피연산자와 숫자 데이터 형식 피연산자의 비교를 허용하지 않습니다. 이 비교를 수행하려면 숫자 피연산자를 명시적으로 문자열 데이터 형식으로 형변환해야 합니다. 식 언어에는 문자열, 숫자, 날짜 및 이진 데이터 형식 간의 형변환을 지원하는 형변환 연산자가 있습니다. 자세한 내용은 형변환(SSIS)을 참조하십시오.

변경 내역

릴리스 내역

2006년 7월 17일

변경된 내용
  • 부울 값 작업에 대한 팁을 제공했습니다.

참고 항목

관련 자료

Integration Services 식 개념

도움말 및 정보

SQL Server 2005 지원 받기