Oracle - 将Varchar转换为Float并指定精度

时间:2011-05-23 19:00:11

标签: oracle casting oracle10g

我需要将varchar转换为float。 (varchar保证是一个数字)

我正在尝试在预先构建的表格上创建物化视图。因此,所有数据类型必须完全匹配...包括数据类型的精度和大小。原始列(在添加NVL之前)从精度为126的FLOAT数据类型中提取。当我尝试将varchar转换为精度为126的浮点数时,它似乎不包括126数据精度。 / p>

(我通过使用下面的查询转换为float(126)来测试它不包括126数据大小的事实。通过我的Toad IDE,我可以看到“ThisorThat”的精度浮动柱是38)。

我只是简单地使用NVL语句更新了我的物化视图......

Select Cast(NVL(thisFloat, thatFloat) as Float(126)) as ThisorThat
....
From tables;

我收到错误“Ora-12060:预构建表的形状与定义查询不匹配”,因为大小不同于我“预构建”的原始表。我需要以某种方式将varchar转换为显式大小为126的浮点数。任何想法?

版本:Oracle 10g

修改 这是一个link,这与我遇到的基本相同。

1 个答案:

答案 0 :(得分:2)

使用

TO_BINARY_FLOAT(mynumberstring) 

TO_BINARY_DOUBLE(mynumberstring) 

你想要做的事实上不是演员,而是转换。