【问题标题】:Extract integer from a string in Oracle SQL and find and replace a specific character with another从 Oracle SQL 中的字符串中提取整数并查找特定字符并将其替换为另一个字符
【发布时间】:2021-09-19 04:12:38
【问题描述】:

我正在尝试从包含字母和特殊字符的字符串中提取数字,例如 绿色 - 100% 绿色 - 90% 红色 - 0% 红色 - 25% 黄色 - 50% 黄色 - 75% 我试过 REGEXP_REPLACE (COLUMN_NAME, '[[:alpha:]]') 但这会离开 - 和 %.我应该再添加两个 REGEXP 来替换 - 和 % 吗?或者有没有一种有效的方法可以在一个函数中做到这一点?

另外在另一个问题中,我需要识别字符串中的双引号并用两次双引号替换,最后将整个字符串用双引号括起来 例如:Example" 应转换为 "Example""" Sam"ple 应转换为 "Sam""ple"

欣赏您的解决方案

【问题讨论】:

    标签: sql oracle regexp-replace


    【解决方案1】:

    要仅提取数字部分,请使用'[^[:digit:]]' 而不是'[[:alpha:]]'regexp_replace()

    regexp_replace(column_name, '[^[:digit:]]', '')
    

    您可以使用以下查询来解决您的第二个问题。

    select '"'||replace('Example"','"','""')||'"' from yourtable
    

    【讨论】:

    • 这里有例子。我的输入是绿色 - 90% 那么输出应该是 90,如果我的输入是红色 - 25% 那么 n 输出应该是 25,如果输入是黄色 - 75% 那么输出是 75。所以基本上我们需要取数字字符串的一部分。 REGEXP_REPLACE (COLUMN_NAME, '[[:alpha:]]') 将 hiphen (-) 和 % 留在数字旁边。
    • 添加评论后才发现错误,所以删除了。无论如何,再次感谢您的回复,确认我做得正确
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 2011-11-16
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多