将位转换为 int returns 负值
Converting a bit to an int returns a negative value
我正在尝试将源数据库中的位字段转换为 SSIS 项目 (SQL Server 2012) 中数据仓库中的整数值
Select cast([MyField] as int) as TheField from MyTable
出于某种原因,这个 returns 0 和 -1,而不是我期望的 +1。
甚至
Select abs(cast([MyField] as int)) as TheField from MyTable
将在目标 table 中生成 -1。
SELECT 语句在预览版和 SSMS 中都按预期工作,我看到了所需的 0 和 1。但是,SSIS 包中的实际数据传输任务没有按预期工作。我尝试了数据转换任务和没有任务的直接写入table。
我真的不想使用额外的更新语句将我的 int 值乘以 -1。
由于这可能有点令人困惑,这里是来源 table:
CREATE TABLE [dbo].[empl](
[Name] [nvarchar](100) NULL,
[active] [bit] NULL
) ON [PRIMARY]
GO
这是 table 的屏幕截图:
以及数据传输任务截图:
目的地 table 以及数据传输和转换的结果:
非常有趣,如果你放置一个数据查看器,你会看到下游,MyField 为 TRUE 或 FALSE,所以你可以做的是添加一个 "derived column" 组件以使用表达式创建一个新列:
MyField == TRUE ? 1 : 0
然后将这个新列映射到目标
我正在尝试将源数据库中的位字段转换为 SSIS 项目 (SQL Server 2012) 中数据仓库中的整数值
Select cast([MyField] as int) as TheField from MyTable
出于某种原因,这个 returns 0 和 -1,而不是我期望的 +1。 甚至
Select abs(cast([MyField] as int)) as TheField from MyTable
将在目标 table 中生成 -1。 SELECT 语句在预览版和 SSMS 中都按预期工作,我看到了所需的 0 和 1。但是,SSIS 包中的实际数据传输任务没有按预期工作。我尝试了数据转换任务和没有任务的直接写入table。
我真的不想使用额外的更新语句将我的 int 值乘以 -1。
由于这可能有点令人困惑,这里是来源 table:
CREATE TABLE [dbo].[empl](
[Name] [nvarchar](100) NULL,
[active] [bit] NULL
) ON [PRIMARY]
GO
这是 table 的屏幕截图:
以及数据传输任务截图:
目的地 table 以及数据传输和转换的结果:
非常有趣,如果你放置一个数据查看器,你会看到下游,MyField 为 TRUE 或 FALSE,所以你可以做的是添加一个 "derived column" 组件以使用表达式创建一个新列:
MyField == TRUE ? 1 : 0
然后将这个新列映射到目标