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

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() 函数,但到目前为止没有找到任何帮助。

最佳答案

如果你真的知道字符串是一个有效的数字,那么使用 cast() :

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

一些警告。

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

其次,当值非常接近时,浮点值的比较可能会出现问题。你可能会考虑:
WHERE abs(cast(property.propertyval as float) - :propValue) < 0.001

或者其他一些阈值。

10-08 04:49