我正在使用Oracle SQL,我有一个带有属性POST(VARCHAR2(10 BYTE))的表。我给出的数据格式为123.34,我需要一个VARCHAR2(123)和一个NUMBER(0.34)来存储在另一个表中。我试图在select语句中考虑一种方法,但无法弄明白。
答案 0 :(得分:0)
您能确定该值始终为NUMBER
吗?如果是这样,那么只需使用TO_NUMBER()
:
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
);
如果您不确定它始终是NUMBER
,那么就会有#34;安全"将字符转换为值的方法,例如,使用REGEXP_SUBSTR()
:
TO_NUMBER(REGEXP_SUBSTR(post, '^\d*(\.\d+)?'))