首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >求和字符串中的不同金额,并在SQL中显示为一个金额。

求和字符串中的不同金额,并在SQL中显示为一个金额。
EN

Stack Overflow用户
提问于 2016-05-24 20:46:24
回答 1查看 73关注 0票数 0

我有一个列,它存储特定ID号的摘要,该汇总列中的值如下所示。

我已支付了100 RX $100 Ovp $80.54的期终余额为550.30

我希望将所有金额$100,$80.54,550.30分开,并将它们相加到Server中的一个值,即730.84。有时,只有一个数额,一些时间,将超过3个金额,所以我想把它们全部加到一个价值。

有人能帮我怎么做吗?

提前谢谢你。

更新:在Shnugo的答复下面的评论中提供了更多的例子:

  1. 方面索赔44838388477,创建了一个价值101.50美元的OVPYMT,信诺PD全部
  2. p$35.50-co8475783847788非ovp dd74747858885 gf非ovp。pt库大于gf支付。
  3. 在调整索赔后,84736625526747创造了48.30美元的索赔额(索赔事实746366784993至00)。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-24 20:54:31

你可以这样做:

简短说明:首先,我取走了$标志。然后,通过用XML和start标记替换所有空格,将字符串分成几个部分。使用前面的开始标记和结尾的结束标记,我们可以将其转换为XML,并使用.nodes()-method作为派生表获取部件。

注意:如果字符串可能包含禁止字符(<,>或&),则必须用&lt;&gt;&amp;替换它们。

代码语言:javascript
复制
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 Splitted
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37423551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档