Преобразование типа данных в выражениях
Есть два типа преобразования данных.
- Неявные преобразования, в которых средство оценки выражений автоматически преобразует данные из одного типа в другой. Например, если 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).
Примечание. |
---|
Значения логического типа не являются числовыми. Хотя логические значения в некоторых средах могут отображаться как числа, они хранятся не в виде чисел, при этом разные языки программирования представляют их в виде числовых значений по-разному, как и методы среды .NET Framework. Например, функции преобразования языка Visual Basic преобразуют True в значение -1, однако метод System.Convert.ToInt32 в среде .NET Framework преобразует True в значение +1. Язык выражений службы Integration Services преобразует True в значение -1. Чтобы избежать ошибок или непредвиденных результатов, следует писать программный код, который предусматривает конкретные числовые значения для True и False. Там, где возможно, необходимо ограничить использование переменных логического типа соответствующими логическими значениями. |
Выражение может использовать аргументы и операнды с несовместимыми типами данных. В таком случае средство оценки выражений не сможет провести неявное преобразование данных. Например, средство оценки выражений не позволяет сравнивать операнды строкового типа данных и операнды числового типа данных. Для проведения такого сравнения числовой операнд должен быть явно приведен к строковому типу данных. Язык выражений содержит оператор приведения, который поддерживает приведение строковых, числовых, двоичных типов данных и дат. Дополнительные сведения см. в разделе Приведение (службы SSIS).
Журнал изменений
Версия | Журнал |
---|---|
17 июля 2006 г. |
|
См. также
Другие ресурсы
Основные понятия выражений служб Integration Services