【问题标题】:SQL split 2 columns into multiple columnsSQL 将 2 列拆分为多列
【发布时间】:2013-01-04 06:06:47
【问题描述】:

抱歉,我在乘火车回家的路上用手机写了这些问题,所以我手头没有现有的代码。我已经弄清楚了一些,但仍然需要一些帮助

1) 问题 1:每 6 位后拆分,基本上我需要在每 5 位后拆分列,以便 123456 创建列,12345 和 6,我尝试使用下面的代码没有结果。没有空格或符号,只有数字。

substring(COA.UserCode2,5,charindex('',COA.UserCode2)) as Account, substring(COA.UserCode2,6,charindex('',COA.UserCode2)) as Project

2) 问题 2:在每个 * 之后拆分,我可以让下面的第一个工作(基金)但是如果我有一个像 1234*34*500 这样的字符串,我的成本中心和来源基本上不起作用,我需要基金的列有 1234(我已经得到了),我的成本中心说 34,我的来源说 500

substring(COA.UserCode3, 1,charindex('*',COA.UserCode3)) as Fund,
substring(COA.UserCode3, 3,charindex('*',COA.UserCode3)+1) as CostCenter,
substring(COA.UserCode3, 1,charindex('*',COA.UserCode3)) as Source

【问题讨论】:

  • 这里有问题吗?还是您希望有人为您编写代码?
  • 请在 BOL 中搜索 substring()、charindex()、patindex() 函数,您会找到所需的一切。 SO 不是代码编写服务
  • @ryadvaville,我不确定你的意思是我希望有人为我编写代码,据我了解,这是一个提问的论坛,我的问题很清楚 1) 有人可以给我看一个每隔 6 位拆分一个字符串的示例,2) 有人可以给我看一个在每个 * 之后拆分一个字符串的示例。如果这要求太多,那么我想我误解了论坛的目的是什么。我已经在许多论坛上回答了 100 多个问题,并且从未觉得有必要与任何人变得聪明,但我想你还是知道大师的。

标签: sql sql-server reporting-services


【解决方案1】:

对于问题1,替换

charindex('',COA.UserCode2) 

len(COA.UserCode2)

(或者只是硬编码长度)。

对于问题 2,您的第 2 列和第 3 列的 Substring Start 参数需要考虑您在前面的列中已经切掉的字符串的长度。我会使用嵌套的 select 语句对此进行编码,以使代码不那么笨重。

【讨论】:

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