【问题标题】:SSIS Derived Column split first parentheses of charactersSSIS派生列拆分字符的第一个括号
【发布时间】:2014-03-05 22:45:37
【问题描述】:

我正在尝试锻炼如何在派生列任务中编写表达式,以从另一列中提取读取代码,例如 (XXXX)

ID | Ethnicity             | ReadCode
-------------------------------------
 1 | (XXXX) White British  | (XXXX)

到目前为止,我有表达式 SUBSTRING(Ethnicity,1,FINDSTRING(Ethnicity,")",1) - 1)

但它会抛出字符不匹配的错误?显然我用这个表达完全是在叫错树,但是到底如何找到(XXXX)并提取?

【问题讨论】:

  • 尝试在派生列中使用以下内容!SUBSTRING(ethnicity,CHARINDEX('(',ethnicity)+1,charindex(')',ethnicity,CHARINDEX('(',ethnicity))-2)
  • TITLE: Microsoft Visual Studio ------------------------------ 导入种族数据时出错 [衍生列 [180]]:解析表达式“!SUBSTRING(Ethnicity,CHARINDEX('(',Ethnicity)+1,charindex(')',Ethnicity,CHARIND‌​EX('(',Ethnicity))-2)”失败. 行号“1”、字符号“32”处的单引号不是预期的。
  • 好的!最后一次尝试! SUBSTRING(ethnicity,CHARINDEX('(',ethnicity)+1,charindex(')',ethnicity))
  • 导入种族数据时出错 [派生列 [180]]:解析表达式“SUBSTRING(Ethnicity,CHARINDEX('(',Ethnicity)+1,charindex(')',Ethnicity))”失败的。行号“1”、字符号“31”处的单引号不是预期的。
  • 括号内有双引号,错误是:无法识别函数charindex

标签: ssis multiple-columns derived


【解决方案1】:

不是一个优雅的解决方案,但是当我测试它时这似乎有效:

"(" + SUBSTRING(Ethnicity,(FINDSTRING(Ethnicity,"(",1) + 1),(FINDSTRING(Ethnicity,")",1) - 2)) + ")"

告诉我。

【讨论】:

  • [Flat File Source [12]] Error: Data conversion failed. The data conversion for column "Ethnicity" returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page.". 认为我现在在别处出错了
  • @ Peter_R 我现在遇到的问题是,当我到达第 3754 行时,文本超出了派生列中给出的长度,所以我还不能回答你的答案
  • @user31891 你能不能不使用派生列中的高级编辑选项来增加列的输出长度
  • 我发现:"(" + SUBSTRING(Ethnicity,(FINDSTRING(Ethnicity,"(",1) + 1),(FINDSTRING(Ethnicity,")",1) - 2)) 起作用了,因为最后我得到了一个额外的 )。感谢 Peter_R
  • @user31891 好吧,正如我所说,这不是一个优雅的解决方案,但很高兴你解决了它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-27
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多