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


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

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

Переменные

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

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

Литералы

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

Неявные преобразования данных

Неявное преобразование типа данных происходит, когда средство оценки выражений автоматически преобразует данные из одного типа в другой. Например, если smallint сравнивается с int, то перед сравнением smallint неявно преобразуется в int.

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

На следующей диаграмме показан тип результата неявного преобразования операций BINARY. Пересечение столбцов и строк в этой таблице является типом результата побитовой операции с операндами левого (From) и правого (To) типов.

Неявное преобразование между типами данных

Пересечением целых чисел со знаком и без знака является целое число со знаком, которое потенциально больше любого из этих двух аргументов.

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

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

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

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

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

Дополнительные сведения см. в следующих разделах:

Функция, которая использует один аргумент, возвращает результат того же типа данных, что и аргумент, со следующими исключениями.

  • Функции DAY, MONTH и YEAR принимают дату и возвращают целочисленный результат (DT_I4).

  • Функция ISNULL принимает выражения любого типа данных Службы SSIS и возвращает результат логического типа данных (DT_BOOL).

  • Функции SQUARE и SQRT принимают числовые выражения и возвращают нецелочисленный результат (DT_R8).

Если тип данных обоих аргументов совпадает, тип данных результата будет таким же. Единственное исключение заключается в том, что двоичная операция над двумя значениями типа данных DT_DECIMAL возвращает результат типа данных DT_NUMERIC.

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

Средство оценки выражений поддерживает все типы данных служб Службы 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).

Связанные задачи

Использование выражения в компоненте потока данных

См. также

Значок служб Integration Services (маленький) Будьте в курсе новых возможностей cлужб Integration Services

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


Чтобы получать автоматические уведомления об этих обновлениях, подпишитесь на RSS-каналы, предлагаемые на этой странице.