【问题标题】:Assigning a SQL NULL to a SSIS string - A SSIS Flaw?将 SQL NULL 分配给 SSIS 字符串 - SSIS 缺陷?
【发布时间】:2014-02-06 23:38:41
【问题描述】:

我使用执行 SQL 任务获取结果集。它只有一列 NullTime varchar。它有三行,第一行是 NULL。我想简单地迭代并显示这些行的值。如果我只通过 C# 脚本来做,那么没有问题。 NULL 显示为空白。同样的事情也可以用 foreach 循环来完成。

如何使用 foreach 执行此操作 - 使用该循环读取每一行并将每一行的值设置为 SSIS 字符串 User::STR_WORD。然后,只需使用 C# 脚本任务显示 User::STR_WORD。

在纯 C# 方法中,我什至可以将空白值(实际上是 NULL)分配给 SSIS 字符串。但是对于 foreach 循环方法,由于 NULL 值,我得到一个错误。

错误是——

错误:分配给变量“User::STR_WORD”的值的类型与当前变量类型不同。变量在执行期间可能不会改变类型。变量类型是严格的,除了 Object 类型的变量。

如何解决此错误?脚本是似乎有缺陷的唯一替代方案吗 循环?

【问题讨论】:

    标签: sql-server ssis


    【解决方案1】:

    解决此问题的方法是 Coalesce 函数,它将 NULL 转换为您指定的值。

    SELECT
    COALESCE([YourColumn], 'EnterValueHere') AS [YourColumn]
    FROM YourTable
    

    因此,这会将 null 替换为您要使用的值。它会 防止奇怪的 FOR 循环突然崩溃。

    创建一个临时表来查看这个工作 -

    create table ##tester
    (names varchar(25))
    insert into ##tester
    values(Null)
    insert into ##tester
    values('Not a null value')
    select names from ##tester
    select coalesce(names, 'Null has been obliterated!') from ##tester 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多