SQL从列中仅获取金额(美元符号后的数字)和百分比(%符号前的数字)

千户

我有一些规则说明,如下表1所示

rule_id   rule_desc
F89   Ded2 + $100 Copay + 20% Coins; $750 Max + $250 Penalty
F70   Ded1+$250Copay+50%;Upto $500 max+50%Penalty

我想从以上两个示例中得到的是..

For F89,
Copay = 100
Coins = 20
Max = 750
Penalty = 250

对于F70,

Copay = 250
Coins = 50
Max = 500
Penalty = 0.5 (50/100)

有人可以帮忙写一个SQL查询(我使用Oracle SQL Developer)吗,我发现在Copay,Coins,Max和Penalty的多行或单独列中得到结果,请尽快帮助我。

您的要求似乎随着每个描述而变化。对于您提供的数据类型以及某些假设,此查询可能会有所帮助-

WITH tab(rule_id, rule_desc) AS 
  (SELECT 'F89', 'Ded2 + $100 Copay + 20% Coins; $750 Max + $250 Penalty' from dual union all
   SELECT 'F70', 'Ded1+$250Copay+50%;Upto $500 max+50%Penalty' FROM dual union all
   SELECT 'F71', '$50 Copay' FROM dual union all
   SELECT 'F72', 'Ded1 + 20% Coins' FROM dual),
-----------------------------------------------
---- End of data preparation
-----------------------------------------------
temp_table as (SELECT rule_id, REGEXP_SUBSTR (rule_desc,'[^\+|;]+',1,LEVEL) txt
                 FROM tab
              CONNECT BY REGEXP_SUBSTR (rule_desc,'[^\+|;]+',1,LEVEL) IS NOT NULL
                  AND PRIOR rule_desc = rule_desc
                  AND PRIOR sys_guid() IS NOT NULL),
final_table as (
SELECT RULE_ID, TXT,
       coalesce(REGEXP_SUBSTR(replace(TXT, 'Upto'), '[a-z,A-Z]+'), 'Coins') "KEY",
       REGEXP_SUBSTR(TXT, '[0-9]+') "VALUE",
       REGEXP_SUBSTR(TXT, '\W+') "SIGN"
  FROM temp_table)
SELECT RULE_ID,
       KEY ||'='||
       case when SIGN = '%' and KEY = 'Penalty' then
           to_char(VALUE / 100)
       else
           VALUE
       end STR
  FROM final_table
 WHERE key not in ('Ded');

输出 :

| RULE_ID |         STR |
|---------|-------------|
|     F71 |    Copay=50 |
|     F72 |    Coins=20 |
|     F70 |   Copay=250 |
|     F70 |    Coins=50 |
|     F70 |     max=500 |
|     F70 |  Penalty=.5 |
|     F89 |   Copay=100 |
|     F89 |    Coins=20 |
|     F89 |     Max=750 |
|     F89 | Penalty=250 |

假设:

1)只有丢失的钥匙可以是“硬币”

2)百分比计算仅适用于罚款。

3)罚金键只能包含我们必须替换的“最多”字符串。在此查询中,将从所有键中删除“ Upto”。

我不确定它可能对您有帮助,但是我希望它能给您一些帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Android XML百分比符号

获取ggplot2图例以在R中显示百分比符号

regexp:从文本和文本本身中获取百分比数字

如何在ggplot2中将字符对象添加到数字标签:在条形图中将%符号添加到百分比标签

获取在Java中声明为字符串的两个数字的百分比

验证数字以及React Js中的百分比符号时出现逻辑错误

根据列位置从两个数据框中获取数字的百分比变化

在Jython中,如何打印带有浮点数的句子,该句子的百分比符号在数字和符号之间没有空格?

在SQL中将百分比添加到数字

在SQL变量上使用百分比符号的问题

JavaScript计算<input>字段中数字的百分比

在gnuplot中添加百分比符号

Preg仅用数字和/或数字替换百分比

从SQL查询和分组中获取百分比

如何从Google图表的工具提示中删除数字和百分比?

在“顶部”中,MEM(百分比数字)反映的是PSIZE还是仅反映RSIZE?

如何输出一美元输入金额的百分比?

如何在sprintf中包含百分比符号

无法显示百分比数字(获取NaN)

Grep和%百分比符号

JavaScript 正则表达式用百分比符号替换所有数字

计算数字的百分比

git 密码中的百分比(%)符号字符

在 C++ 中打印和替换数字和百分比

Kusto - 在结果中添加百分比符号

如何在chartjs中显示百分比符号?

如何将带有百分比符号的字符列转换为数字?

通过计算 R 中两列值之间的百分比值,在条形图标签上添加百分比符号标签

在 Oracle SQL 中查找数字之间的百分比