【发布时间】:2017-12-11 21:27:38
【问题描述】:
我有来自存储过程的以下输出,我正在尝试拆分 Valueasstring 在数字和 alpha 之间切换到它自己的行并更新几个值:
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 更改为 alpha 值,Valueasstring 更改为 1(是)。
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
我只能在我的代码中找到如何分隔一组字符,即逗号。但就我而言,我没有固定字符,甚至没有空格,只是从 Alpha 切换到 Numeric,反之亦然。
【问题讨论】:
标签: sql sql-server xml tsql