2017-12-11 10 views
1

내가 저장 프로 시저에서 다음과 같은 출력을 가지고 있고 나는 그것을 자신의 행에 숫자와 알파 사이에서 전환 Valueasstring을 분할하고 두 값을 업데이트하도록 노력하고있어 :분할 값

Acct Valuetypename Valueasstring EffectiveDate 
123  Accepted  150ABC   8/15/2017 
234  Accepted  500DF   10/17/2017 
345  Accepted  1000ABC   10/17/2017 
456  Accepted  25PV   10/3/2017 
567  Accepted  100PV   8/15/2017 

XML을 사용하는 쉼표와 같이 설정된 문자로 분리하려고 시도했지만 유형 변경시이를 수행하는 방법에 집착했습니다. XML을 사용하도록 설정하지 않았습니다. 내가 달성하기 위해 노력하고있어

Select a.Acct, a.Valuetypename, b.Valueasstring as ValueAsString, a.EffectiveDate 
FROM 
(
    SELECT *, 
    CAST('<X>'+replace(T.Valueasstring,',','</X><X>')+'</X>' as XML) as my_Xml 
    FROM MyTable T 
) a 
CROSS APPLY 
(
    SELECT my_Data.D.value('.','varchar(50)') as Valueasstring 
    FROM a.my_Xml.nodes('X') as my_Data(D) 
) b 

여러 행, valuetypename 1 (예)로 변경 알파 값과 Valueasstring로 변경되었습니다.

Acct Valuetypename Valueasstring EffectiveDate 
123  ABC    1    8/15/2017 
123  Accepted  150    8/15/2017 
234  DF    1    10/17/2017 
234  Accepted  500    10/17/2017 
345  ABC    1    10/17/2017 
345  Accepted  1000   10/17/2017 
456  PV    1    10/3/2017 
456  Accepted  25    10/3/2017 
567  PV    1    8/15/2017 
567  Accepted  100    8/15/2017 

집합 문자를 구분하는 방법은 쉼표로만 찾을 수 있습니다. 하지만 제 경우에는 설정 된 문자가 없으며 알파에서 숫자로 또는 그 반대로 전환 할 수있는 공간도 없습니다.

답변