none
如何在SSIS数据流中赋予空值? RRS feed

  • 问题

  • 如何在SSIS的data flow中,将一个类型为nchar(20)的字段赋予空值?我试了几种方法,似乎只能用空格来填充?
    2012年11月27日 6:32

答案

  • 你没搞清楚NULL和空字符串的区别。另外,nchar/char本来就是用空格填充的。把Len(Col1)>0换成Col1=="           "即可,或者TRIM一下。

    oledb command性能较差。

    想不想时已是想,不如不想都不想。

    2012年12月4日 15:40
    版主

全部回复

  • 用个派生列转换就是了啊

    想不想时已是想,不如不想都不想。

    2012年11月27日 7:13
    版主
  • 用个派生列转换就是了啊

    想不想时已是想,不如不想都不想。


    不行,用replace函数替换掉空格,但是在目标列中仍然会用空格填充。
    2012年11月28日 2:16
  • 你好,

    请问是要在什么情况下把字段赋值为空值? 如果是将Null 值 转为 空值的话, 可以用ISNULL( [your_column_name]  )  ? "" : [your_column_name].

    Best Regards,


    Description: Description: TechNet 论坛好帮手立刻免费下载TechNet论坛好帮手

    2012年11月28日 2:54
    版主
  • 你好,

    请问是要在什么情况下把字段赋值为空值? 如果是将Null 值 转为 空值的话, 可以用ISNULL( [your_column_name]  )  ? "" : [your_column_name].

    Best Regards,


    Description: Description: TechNet 论坛好帮手立刻免费下载TechNet论坛好帮手

    情况是这样的:

    源文件为txt文件,其中有个标记字段,类型为nchar(10)。如果某条记录为补录记录,这个字段会标记为“Add”,如果是正常记录,这个字段为10个空格。

    现在要求是,在目标数据库(SQL)的表中,也有同样的字段(nchar(10))。区别是,目标表格的这个字段,正常记录留空(NULL),补录记录还是为“Add”。

    我现在找不到合适的方法,把数据流中这个的字段的空格替换为空值(NULL)。

    2012年11月28日 3:50
  • 情况是这样的:

    源文件为txt文件,其中有个标记字段,类型为nchar(10)。如果某条记录为补录记录,这个字段会标记为“Add”,如果是正常记录,这个字段为10个空格。

    现在要求是,在目标数据库(SQL)的表中,也有同样的字段(nchar(10))。区别是,目标表格的这个字段,正常记录留空(NULL),补录记录还是为“Add”。

    我现在找不到合适的方法,把数据流中这个的字段的空格替换为空值(NULL)。

    你好, 

    可以试下用LEN(Col1)>0 ? Col1 : NULL(DT_WSTR, 1 ).

    参考自: http://social.msdn.microsoft.com/Forums/eu/sqlintegrationservices/thread/43e4d507-da43-4f4d-8db6-3f1d19033c55

    Best Regards,


    Description: Description: TechNet 论坛好帮手立刻免费下载TechNet论坛好帮手

    2012年11月28日 7:35
    版主
  • 关注一下

    给我写信: QQ我:点击这里给我发消息

    2012年11月28日 12:07
  • 情况是这样的:

    源文件为txt文件,其中有个标记字段,类型为nchar(10)。如果某条记录为补录记录,这个字段会标记为“Add”,如果是正常记录,这个字段为10个空格。

    现在要求是,在目标数据库(SQL)的表中,也有同样的字段(nchar(10))。区别是,目标表格的这个字段,正常记录留空(NULL),补录记录还是为“Add”。

    我现在找不到合适的方法,把数据流中这个的字段的空格替换为空值(NULL)。

    你好, 

    可以试下用LEN(Col1)>0 ? Col1 : NULL(DT_WSTR, 1 ).

    参考自: http://social.msdn.microsoft.com/Forums/eu/sqlintegrationservices/thread/43e4d507-da43-4f4d-8db6-3f1d19033c55

    Best Regards,


    Description: Description: TechNet 论坛好帮手立刻免费下载TechNet论坛好帮手

    这个方法不行。

    现在用了另一个替代方法:数据倒入结束后,另外用oledb command来update。

    2012年12月4日 5:00
  • 你没搞清楚NULL和空字符串的区别。另外,nchar/char本来就是用空格填充的。把Len(Col1)>0换成Col1=="           "即可,或者TRIM一下。

    oledb command性能较差。

    想不想时已是想,不如不想都不想。

    2012年12月4日 15:40
    版主