Oracle SQL,分隔数字字符串以分别获得整数和小数

Oracle SQL,分隔数字字符串以分别获得整数和小数,sql,oracle,Sql,Oracle,我正在使用Oracle SQL,我有一个带有属性POST(VARCHAR2(10字节))的表。我得到的数据格式是123.34,我需要一个VARCHAR2(123)和一个数字(0.34)将其存储在不同的表中。我曾试图在select语句中想出一种方法来实现这一点,但没有找到答案。您能保证该值始终是一个数字吗?如果是这样,那么只需使用来指定编号(): 如果您不确定它是否总是一个数字,则有“安全”的方法将字符转换为值,例如使用REGEXP\u SUBSTR(): 选择“123.45”数值, 子项('1

我正在使用Oracle SQL,我有一个带有属性POST(VARCHAR2(10字节))的表。我得到的数据格式是123.34,我需要一个VARCHAR2(123)和一个数字(0.34)将其存储在不同的表中。我曾试图在select语句中想出一种方法来实现这一点,但没有找到答案。

您能保证该值始终是一个
数字吗?如果是这样,那么只需使用
来指定编号()


如果您不确定它是否总是一个
数字
,则有“安全”的方法将字符转换为值,例如使用
REGEXP\u SUBSTR()

选择“123.45”数值, 子项('123.45',1,仪表('123.45',')-1)整体, 子指令('123.45',指令('123.45','')+1)分母 来自双重

输出: 全色十分音符
123.45 123 45

那么你需要使用
(点)作为分隔符来分割字符串吗?是的,这样就可以了。我仍然不知道如何在Sql中实现这一点,尽管
mod(post_num,1)
将是获取小数部分的另一种方法。我自己永远不会想到这一点,谢谢
WITH t1 AS (
    SELECT '123.34' AS post FROM dual
)
SELECT post_num, TRUNC(post_num), post_num - TRUNC(post_num) FROM (
    SELECT TO_NUMBER(post) AS post_num FROM t1
);
TO_NUMBER(REGEXP_SUBSTR(post, '^\d*(\.\d+)?'))