sql - 如何将 Varchar2 值转换为 Oracle SQL 中的数字?
问题描述
我被困在我的数据库系统任务中,我想在这里得到一些帮助。我正在为类似 Netflix 的平台实现一个数据库,并有一个名为Duration的列,它以以下格式存储每部电影/节目的持续时间:
我想获得数据库中列出的节目/电影的平均持续时间。
是否有任何方法可以将“93 分钟”转换为 93 作为数字,以便计算列的平均值?
这是将持续时间作为列的表的架构:
解决方案
您可以找到SUBSTR
ing 直到第一个空格字符,然后使用TO_NUMBER
:
SELECT TO_NUMBER( SUBSTR( duration, 1, INSTR( duration, ' ' ) -1 ) )
FROM details;
或者,您可以使用正则表达式来获取仅前导数字的子字符串:
SELECT TO_NUMBER( REGEXP_SUBSTR( duration, '^\d+' ) )
FROM details;
但是,最好的解决方案是停止使用VARCHAR2
数据类型,而是使用NUMBER
列,这样您就不需要进行转换,而是将数字数据存储在适当的数据类型中,而不是作为字符串。如果要使用单位显示值,请在需要时执行该格式设置。
推荐阅读
- c++ - 从文件中解析数据的数据
- django - 如何?django 模型字段,其值是同一模型的多对多字段的选择
- node.js - 创建问答 Alexa 应用程序的最佳做法是什么?
- python - 如何加快python中的脚本代码?
- python - 尝试使用基于输入的变量调用类属性
- powershell - 子字符串函数不适用于变量
- java - 如何让我的程序(彩票游戏)再次检查提示?
- postgresql - 在 Azure 云外壳中运行 shp2pgsql
- azure - 使用 Get-AzureServiceRemoteDesktopExtension 或任何 cmdlet 获取云服务(经典)的远程桌面状态
- c++ - C++:在不禁用 UAC 的情况下截取 Windows 登录屏幕/UAC 提示