sql - Oracle SQL 查询中的正则表达式 - 仅限数字和句点
问题描述
在 Oracle SQL 查询中有一个包含以下内容的字段(示例):
{"ID Card": 0.29333333333333333} or {"Speedtest": 0.8166666666666667}
例如,我可以使用 RegEx 来输出查询中的字段,以便只保留数字和句点吗?
例子:
Select ID, CREATEDFORMAT, INSERT_TS, regexp_substr(SCORE, '[^0-9]') xSCORE FROM MYTABLE
但是[^ 0-9]
我只有没有一点的数字。
解决方案
如果您使用的是 Oracle 数据库 12.1.0.2 或更高版本,并且您尝试解析的数字始终在 JSON 对象中,则可以使用 JSON_VALUE 函数提取信息。
询问
WITH
sample_data
AS
(SELECT '{"ID Card": 0.29333333333333333}' AS sample_val FROM DUAL
UNION ALL
SELECT '{"Speedtest": 0.8166666666666667}' FROM DUAL)
SELECT s.sample_val, json_value (s.sample_val, '$.*') AS number_val
FROM sample_data s;
结果
SAMPLE_VAL NUMBER_VAL
____________________________________ ______________________
{"ID Card": 0.29333333333333333} 0.29333333333333333
{"Speedtest": 0.8166666666666667} 0.8166666666666667
推荐阅读
- c++ - 在 Ubuntu 服务器上运行 QT 应用程序时崩溃
- php - 如何将 Restler 类映射到 POST 方法而不是 GET?
- boost-asio - 使用 boost::asio 从多个端口异步读取
- javascript - laravel 中的 Javascript 全局问题
- asp.net-mvc - 有人知道如何在 webpack-dev-server 或类似中代理 index.html 吗?
- rxjs - 错误 TS2339:“可观察”类型上不存在属性“过滤器”
' - swift - 为什么 URL 在这里需要强制解包或默认值?
- ubuntu - Ubuntu 图表中截断的表名
- javascript - javascript debounce:如何获取 e.target?
- angular - 使用 Typescript 在 Angular 中忽略 GET 请求上未定义的属性集