我有一个列,它存储特定ID号的摘要,该汇总列中的值如下所示。
我已支付了100 RX $100 Ovp $80.54的期终余额为550.30
我希望将所有金额$100,$80.54,550.30分开,并将它们相加到Server中的一个值,即730.84。有时,只有一个数额,一些时间,将超过3个金额,所以我想把它们全部加到一个价值。
有人能帮我怎么做吗?
提前谢谢你。
更新:在Shnugo的答复下面的评论中提供了更多的例子:
发布于 2016-05-24 20:54:31
你可以这样做:
简短说明:首先,我取走了$标志。然后,通过用XML和start标记替换所有空格,将字符串分成几个部分。使用前面的开始标记和结尾的结束标记,我们可以将其转换为XML,并使用.nodes()-method作为派生表获取部件。
注意:如果字符串可能包含禁止字符(<,>或&),则必须用<、>和&替换它们。
DECLARE @string VARCHAR(MAX)='I have made a payment for RX $100 Ovp of $80.54 with a closing balance of 550.30';
WITH Splitted(number) AS
(
SELECT CAST(part.value('.','varchar(max)') AS DECIMAL(14,4))
FROM
(
SELECT CAST('<x>' + REPLACE(REPLACE(@string,'$',''),' ','</x><x>') + '</x>' AS XML)
) AS MyString(AsXml)
CROSS APPLY AsXml.nodes('/x') AS A(part)
WHERE ISNUMERIC(part.value('.','varchar(max)') )=1
)
SELECT SUM(number)
FROM Splittedhttps://stackoverflow.com/questions/37423551
复制相似问题