Я пытаюсь преобразовать битовое поле из источника DB в целое значение в хранилище данных в проекте SSIS (SQL Server 2012)Преобразование немного к междунар возвращает отрицательное значение
Select cast([MyField] as int) as TheField from MyTable
Для почему-то это возвращает 0 и -1, в отличие от +1, которую я ожидаю. Даже
Select abs(cast([MyField] as int)) as TheField from MyTable
даст -1 в таблице назначения. Оператор SELECT работает как в превью, так и в SSMS, и я вижу желаемые 0 и 1. Однако фактическая задача передачи данных в пакете SSIS не работает должным образом. Я попробовал задачу преобразования данных и прямое письмо в таблицу без задачи.
Я действительно не хочу использовать дополнительный оператор обновления для умножения значений int с -1.
Как это может быть немного запутанным, вот исходная таблица:
CREATE TABLE [dbo].[empl](
[Name] [nvarchar](100) NULL,
[active] [bit] NULL
) ON [PRIMARY]
GO
Вот скриншот таблицы:
И скриншот задачи передачи данных :
В таблице назначения в результате передачи данных и преобразование:
бы это будет быстрее, чем последующее поле таблицы обновления SQL Statement set field = field * (-1)? Единственные значения у меня равны 0 и -1. –
Я удалил свой ответ. Это лучшее решение. – BIDeveloper
разница в производительности будет незначительной, единственное преимущество этого решения - быть немного (без каламбура :), поскольку действует как преобразование данных из TRUE/FALSE, которые являются фактическими значениями, которые всегда будут в конвейере, независимо от того, оригинальное значение в myField – Jayvee