0

1)質問1:6桁ごとに分割します。基本的に、123456が12345の列と6桁の列を作成するように、5桁ごとに列を分割する必要があります。以下のコードを使用してみましたが、結果はありません。スペースや記号はなく、数字だけです。

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

4

1 に答える 1

0

使用しているDBMS(特定のSQL拡張機能などがある場合)やデータがここでどのように表示されるかがわからない場合は、少なくともいくつかの提案があります。

1)データのサイズが固定されている場合(常に6文字の長さ)、次のように実行できます。

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

2)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 に答える