2013-01-04 74 views
-3

我很抱歉,我在我的电话中将这些问题写在了我的手机上,所以我没有现有的代码。我已经想出了一些,但仍需要一些帮助SQL将2列分为多列

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

substring(COA.UserCode2,5,charindex('',COA.UserCode2)) as Accountsubstring(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

+0

这里有问题吗?或者你想让别人为你写代码? – ryadavilli

+0

请搜索BOL的substring(),charindex(),patindex()函数,你会发现你需要的一切。 SO不是代码编写服务 – Raj

+0

@ryadvaville,我不确定你的意思是我希望有人为我写代码,我的理解是这是一个提问的论坛,我的问题很清楚1)有人可以给我看一个每6位分割一个字符串的例子,2)有人可以给我看一个在每个*之后分割一个字符串的例子。如果那太过分了,我想我误解了论坛的目的。我在很多论坛上回答了100多个问题,从来没有觉得有必要让任何人变得聪明,但是,我想你们都知道这一切都是师父。 –

回答

0

对于问题1,更换

charindex('',COA.UserCode2) 

len(COA.UserCode2) 

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

对于问题2,第二列和第三列的Substring Start参数需要考虑您已经在上一列中切出的字符串的长度。我会用嵌套的select语句来编写代码,以使代码更加笨拙。