Oracle:将字符串转换为double

时间:2013-12-16 15:42:29

标签: sql vb.net oracle

这是我对数据库拉取的查询:

SELECT DISTINCT
TEMPLATE_GROUP_PROPERTIES.PROPERTYTYPE,
PROPERTY.PROPERTYVAL

FROM
TEMPLATE_GROUP_PROPERTIES

LEFT OUTER JOIN PROPERTY_DATA
ON (TEMPLATE_GROUP_PROPERTIES.PROPERTYGROUPID = PROPERTYDATA.PROPERTYGROUPID)

WHERE
PROPERTY.PROPERTYVAL = :propValue

创建数据库的任何人都将Property.Propertyval列定义为字符串,当它表示为科学记数法编号(4.0E-3,2.0E2等)时。我需要将字符串转换为double或double转换为字符串,无论哪种方式都可以工作,我不知道如何。我曾尝试弄乱TO_NUMBER()函数,到目前为止找不到任何帮助。

1 个答案:

答案 0 :(得分:5)

如果您确实知道字符串是有效数字,请使用cast()

WHERE cast(property.propertyval as float) = :propValue

一些警告。

首先,使用该函数将阻止查询在propertyval上使用索引。如果需要索引,可以随时创建功能索引。

其次,当值非常接近时,浮点值的比较可能会有问题。你可能会考虑:

WHERE abs(cast(property.propertyval as float) - :propValue) < 0.001

或其他一些阈值。