首页 > 解决方案 > 如何将 Varchar2 值转换为 Oracle SQL 中的数字?

问题描述

我被困在我的数据库系统任务中,我想在这里得到一些帮助。我正在为类似 Netflix 的平台实现一个数据库,并有一个名为Duration的列,它以以下格式存储每部电影/节目的持续时间:

在此处输入图像描述

我想获得数据库中列出的节目/电影的平均持续时间。

是否有任何方法可以将“93 分钟”转换为 93 作为数字,以便计算列的平均值?

这是将持续时间作为列的表的架构:

在此处输入图像描述

标签: sqloracle

解决方案


您可以找到SUBSTRing 直到第一个空格字符,然后使用TO_NUMBER:

SELECT TO_NUMBER( SUBSTR( duration, 1, INSTR( duration, ' ' ) -1 ) )
FROM   details;

或者,您可以使用正则表达式来获取仅前导数字的子字符串:

SELECT TO_NUMBER( REGEXP_SUBSTR( duration, '^\d+' ) )
FROM   details;

但是,最好的解决方案是停止使用VARCHAR2数据类型,而是使用NUMBER列,这样您就不需要进行转换,而是将数字数据存储在适当的数据类型中,而不是作为字符串。如果要使用单位显示值,请在需要时执行该格式设置。


推荐阅读