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


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

Есть два типа преобразования данных.

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

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

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

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

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

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

  • Функции DAY, MONTH и YEAR принимают дату и возвращают целочисленный результат (DT_I4).
  • Функция ISNULL принимает выражения любого типа данных SSIS и возвращает результат логического типа данных (DT_BOOL).
  • Функции SQUARE и SQRT принимают числовые выражения и возвращают нецелочисленный результат (DT_R8).

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

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

  • Строки типа данных DT_STR преобразуются в тип данных DT_WSTR.
  • Значения даты и времени преобразуются в тип данных DT_DBTIMESTAMP.

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

ms141260.note(ru-ru,SQL.90).gifПримечание.
Значения логического типа не являются числовыми. Хотя логические значения в некоторых средах могут отображаться как числа, они хранятся не в виде чисел, при этом разные языки программирования представляют их в виде числовых значений по-разному, как и методы среды .NET Framework. Например, функции преобразования языка Visual Basic преобразуют True в значение -1, однако метод System.Convert.ToInt32 в среде .NET Framework преобразует True в значение +1. Язык выражений службы Integration Services преобразует True в значение -1. Чтобы избежать ошибок или непредвиденных результатов, следует писать программный код, который предусматривает конкретные числовые значения для True и False. Там, где возможно, необходимо ограничить использование переменных логического типа соответствующими логическими значениями.

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

Журнал изменений

Версия Журнал

17 июля 2006 г.

Измененное содержимое
  • Приведены советы для работы со значениями логического типа.

См. также

Другие ресурсы

Основные понятия выражений служб Integration Services

Справка и поддержка

Получение помощи по SQL Server 2005