emomol 2024-01-24 10:27 采纳率: 0%
浏览 5

orcal sql利用regexp_substr函数获取字符串中的百分数

求解,比如提取这句话的所有百分数'实际使用税率15%、25%、13%来计算'

  • 写回答

1条回答 默认 最新

  • 叫兽-郭老师 新星创作者: Java技术领域 2024-01-24 11:12
    关注

    在Oracle SQL中,你可以使用REGEXP_SUBSTR函数来提取字符中的百分数。如果你想提取所有的百分数,你可能需要结合使用REGEXP_SUBSTR和CONNECT BY LEVEL来达成目的。
    以下将展示一个可能的方法:

    SELECT REGEXP_SUBSTR('实际使用税率15%、25%、13%来计算','[0-90-9]+%', 1, LEVEL) AS percentage
    FROM dual
    CONNECT BY LEVEL <= LENGTH('实际使用税率15%、25%、13%来计算') - LENGTH(REPLACE('实际使用税率15%、25%、13%来计算', '%')) + 1
    
    

    在这个查询中:

    REGEXP_SUBSTR函数用于提取字符串中匹配给定正则表达式的部分。这里的正则表达式'[0-90-9]+%'用于匹配一个或多个数字后面跟着一个百分号的模式。
    CONNECT BY LEVEL部分用于生成一个与输入字符串中的百分号数量相等的行号序列。LEVEL是一个伪列,它在每次迭代时都会增加1。这个行号序列用于REGEXP_SUBSTR函数的第四个参数,它指定了要提取的匹配项的序号。如果这个参数是1,那么函数会提取第一个匹配项,如果是2,那么函数会提取第二个匹配项,以此类推。
    LENGTH('实际使用税率15%、25%、13%来计算') - LENGTH(REPLACE('实际使用税率15%、25%、13%来计算', '%')) + 1用于计算输入字符串中的百分号数量。REPLACE函数用于将字符串中的百分号替换为空字符,LENGTH函数用于计算字符串的长度。这样计算得到的是输入字符串中的百分号数量。

    注意这个函数可能只在Oracle 11g及更高版本中可用。如果你使用的Oracle版本更低,可能需要使用不同的方法来解决这个问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月24日