Поделиться через


Типы данных в выражениях служб Integration Services

Средство оценки выражений использует типы данных служб Integration Services. Когда данные впервые попадают в поток данных пакета служб Integration Services, подсистема обработки потока данных преобразует все данные столбцов в тип данных Integration Services, а данные столбцов, используемых выражением, уже имеют тип данных служб Integration Services. Выражения, используемые в преобразованиях «Условное разбиение» и «Производный столбец», могут ссылаться на столбцы, поскольку являются частью потока данных, включающего данные столбцов.

Выражения также могут использовать переменные. Переменные имеют тип данных Variant, и средство оценки выражений преобразует переменные этого типа в тип данных служб Integration Services перед вычислением выражения. Переменные могут использовать только подмножество типов данных служб Integration Services. Например, переменная не может использовать тип данных BLOB.

Дополнительные сведения от типах данных служб Integration Services и о сопоставлении типов данных Variant с типами данных Integration Services см. в разделе Типы данных служб Integration Services.

Дополнительно, выражения могут включать строковые, логические и числовые литералы. Средство оценки выражений всегда преобразует строковые литералы в тип данных DT_WSTR, а логические литералы в тип данных DT_BOOL. Средство оценки выражений считает все значения, заключенные в кавычки, строками. Числовые литералы преобразуются в один из числовых типов данных служб Integration Services. Дополнительные сведения о преобразовании числовых литералов в числовые типы данных служб Integration Services см. в разделе Литералы (службы SSIS).

ПримечаниеПримечание

Значения логического типа не являются числовыми. Хотя логические значения в некоторых средах могут отображаться как числа, они хранятся не в виде чисел, при этом разные языки программирования представляют их в виде числовых значений по-разному, как и методы среды .NET Framework.

Например, функции преобразования языка Visual Basic преобразуют True в значение -1, однако метод System.Convert.ToInt32 в среде .NET Framework преобразует True в значение +1. Язык выражений службы Integration Services преобразует True в значение -1.

Чтобы избежать ошибок или непредвиденных результатов, следует писать программный код, который предусматривает конкретные числовые значения для True и False. Там, где возможно, необходимо ограничить использование переменных логического типа соответствующими логическими значениями.

Требования к данным, которые используются в выражениях

Средство оценки выражений поддерживает все типы данных служб Integration Services. Однако в зависимости от операции или функции операнды и аргументы требуют определенных типов данных. Средство оценки выражений налагает следующие ограничения на типы данных, используемые в выражениях.

  • Операнды логических операций должны преобразовываться в тип Boolean. Например, СтолбецA > 1&&СтолбецB < 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. Этот пример возвращает значение TRUE, поскольку преобразованное выражение принимает значение «999-10-12 00:00:00.000 +00:00», которое не равно значению другого выражения — (DT_DBTIMESTAMPOFFSET,3) "1999-10-11 20:34:52.123 -3:30".

  • Аргументы, передаваемые математическим функциям, должны преобразовываться в числовые типы данных. В зависимости от функции или операции может потребоваться определенный тип числовых данных. Например, функция HEX требует целого числа со знаком или без знака.

  • Аргументы, передаваемые строковым функциям, должны преобразовываться в символьные типы данных: DT_STR или DT_WSTR. Например, UPPER(«цветок»). Некоторые строковые функции, такие как SUBSTRING, требуют дополнительных целочисленных аргументов, указывающих начальную позицию и длину строки.

  • Аргументы, передаваемые функциям даты и времени, должны преобразовываться в допустимую дату. Например, DAY(GETDATE()). Некоторые функции, такие как DATEADD, требуют дополнительного целочисленного аргумента, указывающего число дней, которые добавляются к дате.

Операции, в которых участвуют восьмибайтовое целое число без знака и целое число со знаком, требуют явного приведения для уточнения формата результата. Дополнительные сведения см. в разделе Приведение (службы SSIS).

Результаты многих операций и функций имеют предопределенные типы данных. Это может быть тип данных аргумента или тип данных, к которому средство оценки выражений приводит результат. Например, результат логического оператора ИЛИ (||) всегда имеет тип Boolean, результат функции ABS имеет численный тип данных аргумента, результат операции умножения имеет наименьший численный тип, который может представить результат без потери точности. Дополнительные сведения о типах данных результатов см. в разделах Операторы (службы SSIS) и Функции (службы SSIS).