【问题标题】:Multiple value in a column sql一列sql中的多个值
【发布时间】:2019-08-07 19:49:54
【问题描述】:

我正在开发一个 SSIS 包。这个包从一个绿色文件的表单中加载信息。该软件包完美运行,但是我的问题出现在名为“SpecialUnit”的列之一中。

客户可以在表单上选择 23 个值,所有这些值都以逗号分隔记录。在我的 SSIS 中,我为所有 23 个值创建了不同的字段,我希望所有这些值在人们选择它们时都显示为 1。 例子。

CASE WHEN sp.CodeText = 'Transit Dept.'
          THEN 1
          ELSE 0
END AS FollowUpByTransit, 

我有一个分隔逗号分隔符的表格,但是在加载时我没有想要的值是 1 或 0。

【问题讨论】:

  • 您的问题在样本数据和结果方面有点短。您可以使用',' + 'Foo,Bar,Fizz,Buzz' + ',' like '%,Foo,%' 来确定@​​987654323@ 是否在逗号分隔的列表中,例如'Foo,Bar,Fizz,Buzz'。不是一个很好的解决方案,而是一个有用的技术。它可以在您的case 表达式中使用以生成0/1 值。

标签: sql sql-server tsql ssis etl


【解决方案1】:

您能否将您的 23 个字段设为计算字段,然后在每个字段的等式上您可以使用如下所示的内容

As case when CodeText like '%Transit Dept%' then 1 else 0 end as FollowUpByTransit

所以你需要使用 like 运算符,所以你忽略了逗号和其他值。

如果你的暗语可能有点相似,你可以采用 HABO 提出的想法,如下所示

   As case when (','+CodeText+',') like '%,Transit Dept,%' then 1 else 0 end as FollowUpByTransit

希望这会有所帮助。

【讨论】:

  • 非常感谢 Ali 和 HABO。我一直在寻找类似的操作。它已修复。
猜你喜欢
  • 1970-01-01
  • 2011-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多