这是我对数据库拉取的查询:
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
或者其他一些阈值。