0

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

4

1 回答 1

0

不知道您使用的是什么 DBMS(如果它具有特定的 SQL 扩展等)或数据在此处看起来如何,至少有一些建议:

1)如果数据的大小是固定的(总是6个字符长),你可以这样做:

SUBSTRING(UserCode2,1,5) as Account, SUBSTRING(UserCode2,6,1) as Project

2)对于第二个问题,您可以执行以下任何操作:

如果数据是固定的:

SUBSTRING(UserCode3,1,4) as Fund, 
SUBSTRING(UserCode3,6,2) as CostCenter, 
SUBSTRING(UserCode3,9,2) as Source 

或者,如果数据是可变的并且您必须在 * 字符上进行拆分:

SUBSTRING(UserCode3,1,CHARINDEX('*',UserCode3,1)-1) as Fund,
SUBSTRING(UserCode3,CHARINDEX('*',UserCode3,1)+1,CHARINDEX('*',UserCode3,CHARINDEX('*',UserCode3,1)+1) - CHARINDEX('*',UserCode3,1)-1) as CostCenter,
RIGHT(UserCode3,3) as Source

执行这么多 CHARINDEX 和 SUBSTRING 函数可能对性能不利,但如果不了解更多关于数据的信息,就很难做出明智的建议。

于 2013-01-04T18:28:12.503 回答